golang学习笔记(二)
内容
map
映射也叫字典,在《Go程序设计语言》中被称非常有用。其内有键和值,一个键对应一个值。
新建的话 可以直接m := make(map[string]int)
也可以var m map[string]int m=make(map[string]int)
也可以
var m = map[string]int{
{"a",123}
{"b",456}
}
索引对应的数值的话则是m["a"]
这样。
如果想插入一个值与键的话,可以直接m["c"]=333
,修改也是如此
删除键对应的值则是:delete(m,"a")
(键已经删去)
当读取一个map内不存在的键时,会返回一个映射的元素类型的零值
通过双赋值检测某个键是否存在:
elem, ok = m[key]
若 key 在 m 中,ok 为 true ;否则,ok 为 false。
若 key 不在映射中,那么 elem 是该映射元素类型的零值。
题目:输入一英文句子,提出每个单词后再以map的显示输出 “单词”:出现数量
答案
func Wordcount(s string) map[string]int {
s := "alex map and cool"
ss := strings.Fields(s)
n := len(ss)
word := make(map[string]int)
for i :=0 ;i < n;i++ {
word[ss[i]]++
//这里对word索引,键会对应为ss内的元素,第一次出现会0+1=1,再次出现就会重新索引过来。
}
return word
}
函数
在golang中,函数也可以当成一个数值来传递
函数自变量=闭包
函数自变量:匿名函数,木得函数名
闭包会被绑定在对应的变量上,变量动,闭包就会动一次。(有点不知道该怎么举例描述。。。。。。)
题目: 斐波纳契闭包
func fibonacci() func() int {
x := 0
y := 1
return func() int{
x,y = y,x+1
return x
}
}
Great content! Super high-quality! Keep it up! 🙂
thanks
Hello! I virtuous would like to afflict with a cyclopean thumbs up recompense the qualified info you fool here on this post. I desire be coming resile from to your blog in search more soon. http://www.surviv-io.fun
ok