这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天
本次学习了一些go语言切片和map还有函数的相关知识
先来讲讲切片这一数据结构的特性
切片可以说是数组的plus拥有动态的存储空间其定义方式是var []datatype dataname
还可以使用dataname=make([]datatype,len)len并不会使切片长度固定
在赋值过程中你可以直接省略相当一部分步骤你可以s;=[]datatype{data1,data2,data3,······datan}
当然你也可以定义完成再赋值,切片可以使用append函数进行增加
假设我们有个切片s,我们想在后面加上{1,2,3,4}我们可以append(s,1,2,3,4)
append函数可以把另一个切片r加到s后append(s,r...)注意,...不可省略
当我们想要删除索引为s的数时我们可以利用append函数来进行删除思路如下
所以我们这么进行
a=append(a[:s],a[s+1:])
如此一来就成功删除了索引为s的值
查找函数可以利用遍历来查找,比如我们要查找w这一值的索引
for k,v=range a{
ifv==w{return k}
}
下来介绍map的操作
map的初始化 m:=make(map[datatype]datatype) map的赋值 m=map[datatype]datatype{ "name": "tom", "age": "88", "number": "154898485", "gender": "male", } 当然也可以直接使用m:=map[datatype]datatype{ "name": "tom", "age": "88", "number": "154898485", "gender": "male", }
map这一数据结构和哈希表类似 m[name]有两个返回值分别是value和ok,如果存在m[name]则ok值是true否则是false map的遍历很简单 直接利用range函数进行遍历 for v,k=range m{ fmt.Printf("value:%v key:%v",v,k) } 最后 我们来说说函数 在go语音中,函数也是一种变量类型我们可以定义一个函数类型的变量下面是返回值为函数的运算
func sub(a int, b int) int {
return a - b
}
func sum(a int, b int) int {
return a + b
}
func cz(a int, b int) func(int, int) int {
if a > b {
return sub
} else {
return sum
}
}
func main(){
var f func(int,int)int
f=cz(a,b)
f(a,b)
}
在上面的案例中如果a比b大就返回sub函数运行减法运算,否则运行sum函数加法运算
再写一个传递值为函数的案例
func hl(a string){
fmt.Print("hello,%v",a)
}
func gv(a string, f func(string)) {
f(a)
}
func main (){
gv("xiaoming",hl(a))
}
gv函数传入一个字符串“xiaoming”和一个函数hl,hl的功能是fmt.Print("hello,%v",a),在gv函数中f的功能和hl一致,结果是输出hello,xiaoming