> 目的:快速上手 go 语言 1. `package main` 表示我们这个文件的包名 2. `import "fmt"` 表示引入`fmt`包 3. 注释的代码 ``` // 单行注释 /* Author by 菜鸟教程 我是多行注释 */ ``` 4. `func main() {}`必须要有的,作为入口函数执行 5. 数据类型: ``` 1. 布尔型 2. 数字类型 3. 字符串类型 4. 派生类型 ``` 5. 定义变量: ``` var age int;//表示定义一个int型的age变量,如果没有初始化,变量默认为零值。 fruit = apples + oranges;//表示定义一个fruit变量,类型初始化是啥就是啥 var v_name = value //根据值自行判定变量类型。 intVal,intVal1 := 1,2//省略 var, 注意 := 左侧如果没有声明新的变量,就产生编译错误,必须要有一个没有被声明的新变量,如果也有声明过的,相当于赋值 ``` 6. 常量: ``` //显式类型定义: const b string = "abc" //隐式类型定义: const b = "abc" //const c_name1, c_name2 = value1, value2 //枚举: const ( Unknown = 0 Female = 1 Male = 2 ) //iota: iota 在 const关键字出现时将被重置为 0(const 内部的第一行之前),const 中每新增一行常量声明将使 iota 计数一次(iota 可理解为 const 语句块中的行索引)。 ``` 7. 任意类型:`interface{}` ``` var user = []map[string][]interface{} //定义了类似这种的结构:[{"ada":[1,"dsa",[12,3,]]}] ``` 8. 取出结构体的值 ``` //如果我们有这样的结构体 type User struct { Id int UserName string Password string } //当我们解析出数据的时候,可能会得到这样的值 {1 dsad 123} //这时候直接用这样的方式取值 user.Id //1 ``` 9. 好像没回调也不会执行下面的语句,要等执行完成才会执行下面的语句 10) defer 规则 defer 声名的函数最后才会执行,会先执行函数内其他的 https://www.cnblogs.com/jukaiit/p/10786093.html ``` package main import "fmt" func main() { defer fmt.Println("world") fmt.Println("hello") } //hello //world ``` 11. 切片 https://www.cnblogs.com/OctoptusLian/p/9205326.html 切片拥有 长度 和 容量。 切片的长度就是它所包含的元素个数。 切片的容量是从它的第一个元素开始数,到其底层数组元素末尾的个数。 切片 s 的长度和容量可通过表达式 len(s) 和 cap(s) 来获取。 你可以通过重新切片来扩展一个切片,给它提供足够的容量。 ``` package main import "fmt" func main() { s := []int{2, 3, 5, 7, 11, 13} printSlice(s) // 截取切片使其长度为 0 s = s[:0] printSlice(s) // 拓展其长度 s = s[:4] printSlice(s) // 舍弃前两个值 s = s[2:] printSlice(s) // 舍弃前两个值 s = s[1:] printSlice(s) } func printSlice(s []int) { fmt.Printf("len=%d cap=%d %v\n", len(s), cap(s), s) } ``` 12. go 语言中 int 和 string 类型的转换 https://www.cnblogs.com/miria-486/p/10706699.html int 转 string 直接只用`string(0)`这种方式的话 string 出来的不知道是个啥,因此换种方式 ``` import "strconv" //string到int (这个默认是int32类型的) int,err := strconv.Atoi(string) #string到int64 int64, err := strconv.ParseInt(string, 10, 64) //第二个参数为基数(2~36), //第三个参数位大小表示期望转换的结果类型,其值可以为0, 8, 16, 32和64, //分别对应 int, int8, int16, int32和int64 #int到string string := strconv.Itoa(int) //等价于 string := strconv.FormatInt(int64(int),10) #int64到string string := strconv.FormatInt(int64,10) //第二个参数为基数,可选2~36 //对于无符号整形,可以使用FormatUint(i uint64, base int) ```