这是我参与【第五届青训营】伴学笔记创作活动的第1天
本课重点:Go语言的基础语法
Go学习 Day1
Golang只有一种循环表示:for
死循环为for{} Golang中的for,if后必须有“{”且“}”必须在下一行
switch case语句中执行case时不用加break
go中的switch语句更加强大,可以使用任意变量类型,比如:结构体,字符串等,甚至switch可以取代任意的if-else语句
即可以 在switch不加任意的变量在case中去写条件分支
var a [5]int表示可以存放五个整形变量的数组a,数组不常用因为长度固定
切片:切片相当于一个任意长度的数组,可以在任意时刻更改长度,也有更丰富的操作 即,用make创建一个切片(s:=make([ ]string,3)s便可以当数组去用,且可随时更改长度
切片可以用append去堆加元素,注意append的用法,他必须把append的值重新赋给数组即s:=append(s,"d")此时就给s切片增加了新的元素“d”
在创建切片时,可以直接定义上一个长度即
c:=make([ ]string,len(s))
还可在此基础上用copy操作将s切片的内容拷贝在c上即
copy(c,s)
在提取打印元素时用“:”可选择要打印的范围即
fmt.Println(s[2:5])表示打印出第二个元素到第五个元素的内容
不包括第五个位置的元素 即,
如s:=[a,b,c,d,e,f]
fmt.Println(s[2:5])为:[c,d,e]
map 是使用最频繁的数据结构,用make创建一个空map即
m:=make(map[string]int)注意:用到了两个类型 string int
m["one"]=1
m["two"]=2
可以写出KV一对
也可以用delete删除即delete(m,"one")
在读取时,可以在查找元素后加一个”ok“来判断有无“k“的存在
即 r,ok:=m["one"],结果为1,false
range
对于一个切片/数组或者map我们可以通过range来快速遍历
range遍历时对于数组会返回两个值,第一个时索引,第二个是对应位置的值,如果我们不需要索引可用_"去取消
对于map第一个值是”key”第二个值是value
go中的函数返回时一般返回两个值,第一个是“value"第二个是判断是否存在
指针,go中 的指针非常有限主要作用是对传入的参数进行修改
错误操作:
func add(n int){
n+=2//只是做了一个拷贝不起作用
}
正确操作
frnc addptr(n *int){
n+=2运算时加“”
}
调用时加上一个“&”
addptr(&n)
结构体:大类型字段的集合
type user struct{
name string
passward string
}
可以用结构体名称初始化一个结构体变量,在初始化时我们需要传入每个字段的初始值,也可以定义一部分初始值,没有初始化值的话,该字段就是一个空值即
a:=user{name:"wang",passed:"10124")}
我们用“.字符串的名字去读取/写入字符串的内容”即
var d user
d.name="wang"
结构体同样可以做参数,做参数的话就有指针和非指针两种用法,指针使用时为(*user)
带指针就能对结构体进行 修改 可以在函数中加入“error”来表示函数是否出错例如: func hanshu (users [ ]user,name string) ( v *user,err error){ //返回时就得返回两个值 如: return nil,errors Now("not found") }
本节课讲述的相对基础,只要认真学,查缺补漏,就一定有收获