golang学习笔记(二)

2020年2月12日 4 作者 y1nhui

内容

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 
    }
}

参考:
go语言之旅
学习之旅答案