(与课程ppt对应)
2.5Go语法中与C++类似,但仍有不同:
- if语法不加(),如果加了,编译器自动去掉;不能将if中内容写在同一行,Go需要加入大括号
- switch语句自动break
- 数组 定义var a[5]int{1,2,3,4,5},切片
//可以进行切片
s:= make([]string,3)
s = append(s,"d")//切片赋值
c:= make([]string,len(s))
copy(c,s)//拷贝s给c
2.8 map golong中的map是随机排序的。
s:= make(map[string]int)
m["one"] =1 //赋值
delete(m,"one")//删除键值对
2.9 range
for k,v :=range m{}//遍历的是map类型,可以使用_进行
2.10 函数 变量类型是后置的,下列代码v和ok均为返回值。
func ex(m map[string]int,k string)(v string,ok bool){
return v,ok
}
2.11指针 此处主要为改变函数使用时候变量(类似于C++)
func add(int *n){
*n+=2;
}
//使用时:
add(&n)
2.12结构体 结构体支持指针(2.11),可作为函数参数
2.13结构体方法
2.14错误处理
在函数返回值里面加入err 类型参数,在return时返回error.new("error message")
2.16字符串格式化
//打印:
fmt.Printf("%v",s)
fmt.Printf("%+v",s)//打印字符串名称+值
fmt.Printf("%#v",s)//打印字符串类型、名称+值
2.17 json操作
2.18时间处理
Go语言的实战案例
3.1 此处与老师讲解不同的是,我的代码中不需要加入时间戳就能够产生不同的随机数(?
package main
import (
"fmt"
"math/rand"
)
func main() {
maxNum := 100
secretNumber := rand.Intn(maxNum)
fmt.Println("The number is", secretNumber)
}
Go语言进阶与依赖管理
01,语言进阶 协程:用户态,轻量级线程,栈KB级别,由Go语言自己创建,甚至一次可以创建上万协程
线程:内核态,线程跑多个协程,栈MB级别
调用协程:在函数前面加入一个go关键字即可
go func(j int){
hello(j);
}
1.2 协程通信
1.3 Channel 通道
无缓冲通道 make(chan int)
由缓冲通道 make(chan int,2)
02依赖管理:
环境变量:GOPATH
Go Vendor:通过在每个项目引入一份依赖的副本,优先使用该vendor文件中存储的版本。
Go Module:通过go.mod文件管理依赖包版本,通过go get/go mod 指令工具管理依赖包