Day1总结:
- Go语言相对Python更针对于WEB开发,并且更适用于并发场景
- Go语言是强类型语言,每个变量对应的类型不可随意改变
- Go语言语法严谨,格式清晰
- Go语言没有While循环,只有for循环
- Go语言中,每个程序都有入口与出口,少期中一个便会报语法错误
Day2:
数组:
//数组声明:
func TestArrayInit(t *testing.T) {
arr := [3]int //含有3个元素的数组
arr1 := [4]int{1,2,3,4} //含有4个元素的数组,初始化并且赋值
arr2 := [...]int{1,3,5,6,8} //含有n个数值的数组,长度等于赋值
}
//数组遍历:
func TestArrayTravel(t *testing.T) {
arr1 := [...]int{1,3,5,7,9}
for i := 0; i < len(arr1); i ++ {
t.Log(arr1[i])
}
}
Go语言的切片并不支持[::-1]操作
cap:代表数组容量
len:代表可访问的长度
cap的扩容机制,如果容量小于1024,则是当前容量*2,如果判断容量大于1024,则扩容为当前容量的1.25。
两个相同引用的切片采取的是共享内存机制。
make:创建语句,重要
Map:
Map类似于Python的字典,采用key:value形式储存数据
不同的地方在于,Map需要事先声明Map的类型,如果遇到key对应value不存在,则自动赋值为0
P.S, 如果对应的key没有被创建,是通不过判断的
func TestAccessNotExistsingKey(t *testing.T) {
m1 := map[int]int{}
t.Log(m1[1])
m1[2] = 0
t.Log(m1[2])
// m1[3] = 0 当m1没有被创建时,判断会走向else而不会返回0
if v, ok := m1[3]; ok {
t.Logf("key 3 value is %d", v) //相反,如果m1[3]被创建时,则返回0
} else {
t.Log("Key 3 is not existing")
}
}