1 基本语法
1.1 变量
Go语言是一门强类型语言,每一个变量都有它自己的变量类型。 常见的变量类型包括整数int
、浮点型float
、布尔型bool
等。 Go语言声明变量的方式有两种,一种通过var name 变量类型 =
的形式,还可以通过变量 :=
的方式进行声明。同时可以使用const
替代var
使来声明常量。
1.2 循环结构
Go语言只有for一种循环
js
for{
fmt.Println("Go")
break
}//死循环
for i:=0;i<5;i++{
fmt.Println("Go")
}
1.3 判断结构
Go语言的判断结构if else
与c语言类型,但Go不需要()将判别式括起来且if
后必须跟{}。
js
if a>b {
fmt.Println(a)
}else{
fmt.Println(b)
}
1.4 Switch语句
在Go语言中,Switch
不会像c语言一样不遇到break
就继续往下执行。Go语言的Switch
后可以使用任意变量并且可以在case
中添加条件分支。
js
a := 2
switch a {
case 1:
fmt.Println("1")
case 2:
fmt.Println("2")
default:
fmt.Println("0")
}
switch {
case a < 12:
fmt.Println("small")
default:
fmt.Println("big")
1.5 数组和切片
数组是个具有编号且长度固定的元素序列,声明方式和c语言一样,而在实际使用中,更常用切片。
js
var arr[5]int = {1,2,3,4,5}
切片可以任意更改长度的数组,可以通过make
创建切片,append
添加元素,使用起来更方便。
js
s := make([]string,3)
s[0] = 'a'
s[1] = 'b'
s[2] = 'c'
s = append(s.'d')//s = {'a''b''c''d'}
1.6 函数
Go定义函数时使用func
关键字,并且函数可以返回多个值。
js
func add(a int, b int) int {
return a + b
}
func exists(m map[string]string, k string) (v string, ok bool) {
v, ok = m[k]
return v, ok
}
func main() {
sum := add(1, 2)
v, ok := exists(map[string]string{"a": "A"}, "a")
}
1.6 指针
指针的主要用于对函数中传入的参数进行修改。
js
func add(n *int) {
*n += 2
}
func main() {
n := 5
add(&n)
fmt.Println(n) // 7
}
1.7 结构体
结构体的话是带类型的字段的集合。声明方式与c语言相似。
js
type user struct {
name string
password string
}
2 常用特性
2.1 并发
Go语言在并发编程方面比绝大多数语言要简洁不少,golang的并发执行单元是一种称为goroutine
的协程。golang中实现协程间通讯有两种:(1)共享内存型,即使用全局变量+mutex锁来实现数据共享;(2)消息传递型,即使用一种独有的channel机制进行异步通讯。
2.2 错误处理
Go语言使用多值返回的方式处理错误,通常最后一个返回值是错误值。通过使用error类型和panic、recover机制,可以更好地处理错误和异常情况。
2.3 接口与实现
Go语言中的接口由方法签名组成,一个类型只要实现了某个接口的所有方法,就被认为实现了该接口。通过接口,可以实现多态和组合等设计模式。