GO语言的优势:
- 拥有丰富而且可靠的标准库,不需要过度依赖第三方库来进行开发(只用标准库和基于标准库的第三方库就能开发出高并发的代码和应用)
- GO的语法十分简单易懂,相较于Java和C语言更加简洁(去掉了部分表达式括号和大括号,循环模式去掉了while,只剩下for循环,但依然可以实现while的功能)
- 拥有和Java类似的garbage collection功能,让编程者可以更加专注于代码的逻辑性而不是内存管理上
- GO语言的编译速度比C语言要快的多
GO语言语法:
- pakage关键字:代表一个程序的入口包
- import关键字:导入库(例子:"fmt" 主要作用是负责屏幕的输入输出字符串)
- func关键字:函数关键字,创建一个函数(func main:主函数)。如何定义一个函数:
func add(a int, b int) int代表创建一个函数add,它的parameters是两个int,return value也是一个int (GO语言中可以返还多个数据和多个类型) - 打印hello world:
fmt.Println("hello world")fmt是导入的标准库,Println则是该标准库中的一个方法 - 变量:所有变量都可以用关键字var来定义;所有定义的变量的真正类型会根据等于号后面赋的值自动确定。用var定义变量的3种方式:
1.
var a = 12.var a int = 13.var e float64 f := float32(e)第二种明确申明了a是int变量 第三种是属于将一个变量的类型赋给另一个变量(这里将cast成float32类型的e的类型赋给了f) - 常量:可以用关键字const来定义常量
- if else关键字:和Java和C语言的if else很类似,唯一区别就是GO语言的if后面的条件语句去除了表达式括号(例子:
if 7%2 == 0) - for关键字:和Java和C语言的for也大同小异,同样去除了for后面的条件语句的表达式括号;唯一需要注意的点就是在GO语言中单写一个for就是表示死循环的意思
- switch case关键字:仍旧和Java和C语言的switch case类似,但是有改进的地方就是GO语言的case后面可以跟条件语句,而Java和C语言的switch case就只能跟一个int(甚至可以在某些地方取代if else语句)
- 数组:写法 ->
var a [5]int代表一个有五个elements的int数组。数组的初始赋值方法:a := [5]int{1,2,3,4,5}在真实应用中很少用到数组,因为数组长度是固定的,十分不灵活 - 切片(重点):可以视为一个可变长度的数组。写法 ->
a := make([]string, 3)代表创造了一个长度是3的string切片。需要继续添加切片长度可以使用append方法append(a, "a")代表向切片a的尾部添加一个新的element "a"。想要复制切片可以使用copy方法。想要截取切片的某一段的方法:a[2:5]代表截取a切片的index位置的2到4的elements(注意是index位置);在这里冒号就相当于是切片的那把刀。 - map:和Java的hashtable或者hashmap类似。给一个目标在map中去索引相对应的内容
- 指针:相对于C语言中的指针,GO语言的指针功能非常有限。定义方式跟C语言相似,都是用*来表示该变量是个指针变量,用&来表示解码一个指针的地址
- 结构体:跟C语言和Java中的class类似,用struct关键字来定义,里面的内容就是一个通用的struct需要包含的变量,也可以给struct定义专用的类成员函数。调用方法与其他编程语言类似
- 错误处理:可以利用GO语言的特性返还多个值,其中可以包括错误代码