让我们一起学习go语言

keven418440201 · · 2033 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

出于朋友的推荐或项目的需要让我认识了go语言。简单的学习或了解后,发现go可以说吸取了各种语言的精华,并且语法简练,堪称至简至美。尤其在服务器并发性能上有超强的发挥,是七牛公司开发云服务的核心语言。并且性能上比c语言不会逊色多少,但是综合比较,go的优势完全大于c。很多人称是c/c++和python融合,抓住了c的性能,吸取了python的开发简易度。在此简单介绍下,go语言开发团队作者是1987年图灵奖得主,前贝尔实验室成员,B语言和C语言的设计者,Unix和plan9的创建者,肯.汤姆逊(Ken Thompson)。其他成员均是plan9在贝尔实验室的原班人马,可谓是大牛出品。话不多说,下面开始介绍go:

首先从世界著名的hello world小程序开始(go环境大家自己搞定吧),

package main  
import "fmt"  
  
func main () {  
    fmt.Println("Hello World! 你好,世界!")  
}  


1、package是go的最小分发单位,也是工程管理中依赖关系的体现。

2、import是导入包关键字,由于打印方法属于fmt包,所以在此导入之。

3、main方法是go的入口函数,fmt.Println()是打印输出函数。


有了以上的一段代码相信会有了一点感性认识。下面着重讲下go的语言特性,有其他c/c++,python,java等开发经验的朋友相信感触会很深。

1、自动垃圾回收;

2、函数多返回值;

3、优雅的错误处理;

4、匿名函数和闭包;

5、接口(go作者说过一句话,如果让我移植一种功能到其他语言,我会选择接口。可以想象它的与众不同和魅力所在)

6、并发编程;

7、反射;

8、等等,其他特性大家慢慢体会吧。


下面说下go的关键字,并简单举例示范:

1、break           //与c等其他语言的break一样的作用,终止循环并跳出,但又有点不一样,慢慢体会;

2、case             //和switch和select一起使用,没看错,select也会也case搭配使用;

3、chan             //信号定义,类似于unix中的管道

4、const            //常量定义

5、continue

6、default

7、defer            //相信有时忘记关闭一个已经打开的文件而让程序出错甚至崩溃的时候,那么defer就可以轻松解决这个问题。

8、else

9、fallthrough  //由于switch和case不像c里一样需要break来跳出,而fallthrough就可以让两个挨着的case连续;

10、for              //for就是for,不过已经完全超越了c中的for

11、func           //定义函数的关键字

12、go              //用于并行编程,简单直接;

13、goto           //go竟然还保留了goto,不过有时用它还是能解决棘手问题;

14、if

15、impor        //导入其他包关键字

16、interface   //定义接口

17、map          //没错,go把map升级为了关键字

18、package   //定义包名

19、range        //迭代用

20、return

21、select       //并发用,监听chan上的数据

22、struct

23、switch       //你懂的,不过已经超出了你的理解,它可以传递字符串,还有更多惊喜;

24、type           //定义新的类型用

25、var             //声明变量


基础类型有

bool型:bool

整型:int8、type、uint8、int16、uint16、int32、uint32、int64、uint64、int、uint、uintptr

浮点型:float32、float64

复数:complex64、complex128

字符串:string

字符:rune

错误:error


支持的符合类型有

指针(pointer)

数组(array)

切片(slice)

字典(map)

通道(channel)

结构体(struct)

接口(interface)


下面示范几个小例子:

package main

import (
	"fmt"
)

func add(a, b int) int {
	return a + b
}

func main() {
	result := add(1, 2)
	fmt.Println(result)
}


package main

import (
	"fmt"
)

func sum(values []int) int {
	var sum int
	for _, value := range values {
		sum += value
	}
	return sum
}

func main() {
	values := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
	var result int
	result = sum(values)
	fmt.Println(result)
}

package main

import (
	"fmt"
)

func test() func() int {
	i := 10
	return func () int {
		j := 20
		i += 100
		j += 200
		return i + j
	}
}

func main() {
	f := test()
	fmt.Println(f(), f(), f(), f(), f())
}



go语言学习第一课到此结束。以上是本人初学go语言的一些粗浅认识,如有不对之处,望大牛指正。

有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:keven418440201

查看原文:让我们一起学习go语言

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2033 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传