go随记
go随记
使用
make(切片类型,个数)
对切片初始化var str string=strconv.Itoa(x)
将x整形转变为stringstrconv.ParseInt
是将字符串转换为数字的函数数组使用
var
方式创建会初始化copy
复制的方式用于切片或者string
go语言字符是byte,通过码值的形式,实现
使用
%v
打印各种类型go语言会自动地初始化
全局变量不支持使用自动推导的方式进行初始化
使用const模拟枚举
在包内的函数,如果是小写,那么只能在包内使用,大写才能在包外正常使用
init(),用于包的初始化,优先调用
如果对一个包不适用的的话
可以在前面加入_
如果包名太长可以在前面加上自己的名字
如果使用的
.
则不需要包名,就可使用白里面的函数,但是这样本包就不能写同名函数使用打印函数可以直接打印切片,以及数组
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19func main() {
//直接声明并且初始化
ints := []int{1, 2, 3}
for _, v := range ints {
fmt.Println(v)
}
//先声明再创建空间
var ints2 []int
ints2 = make([]int, 2)
for _, v := range ints2 {
fmt.Println(v)
}
fmt.Println(ints)
ints3 := [3]int{1, 2, 4}
fmt.Println(ints3)
}如果切片的长度超了,我们使用
append
,容量会变成原来的两倍切片的下标截取,相当于得到的是地址,所以当修改截取的数组的时候,原来的数组也会发生变化,如果是使用的是
copy
则只是一个拷贝类的首字母大写,才能在其他包访问到类
go语言的匿名函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15func() {
defer fmt.Println("this is A.defer")
i := 0
for i < 10 {
i++
fmt.Println("this is goRoutine : ", i)
time.Sleep(1 * time.Second)
}
fmt.Println("A")
func() {
defer fmt.Println("this is B.defer")
fmt.Println("this is B")
}()
}() //加小括号是为了调用使用
runtime.Goexit()
退出当前的goroutine
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15func() {
defer fmt.Println("this is A.defer")
i := 0
for i < 10 {
i++
fmt.Println("this is goRoutine : ", i)
time.Sleep(1 * time.Second)
}
fmt.Println("A")
func() {
defer fmt.Println("this is B.defer")
fmt.Println("this is B")
}()
}() //加小括号是为了调用
go随记
https://tsy244.github.io/2023/05/08/go/go随记/