golang书签
- goland中使用go module
- 面向信仰编程
- Go-Questions
- liwenzhou go学习之路
- 极客兔兔
- github开源使用方法
- Go - Frequently Asked Questions
基本语法
- 数组
[len]T共同构成数组类型,
[3]int
和[4]int
是不同类型
- 切片
以数组申明切片需注意左闭右开原则。
var a []int == nil
但是与nil map不同,不好理解
- map
必须make初始化,否则panic报nil map
下面代码很奇怪
func main() {
type Map map[string][]int
m := make(Map)
s := []int{1, 2}
s = append(s, 3)
fmt.Printf("%+v\n", s)
m["q1mi"] = s
s = append(s[:1], s[2:]...)
fmt.Printf("%+v\n", s)
fmt.Printf("%+v\n", m["q1mi"])
}
结构体
struct{}
可以看作是匿名结构体类型,struct{}{}
就是匿名结构的实例了
接口
- 空接口
两种类型断言方式
func funcA(a interface{}) {
v, ok = a.(string) // 空接口变量.(具体类型), 返回值可以不取ok
if !ok {
fmt.Println("Guess failed")
} else {
fmt.Println(v)
}
}
func funcB(a interface{}) {
switch t := a.(type) { // 空接口变量.(type) 只能写到switch块内
case int64:
fmt.Printf("I'm a int64, %v, %v", t, a.(int64))
case string:
fmt.Printf("I'm a string, %v, %v", t, a.(string))
}
}