golang基础08:映射(map)的介绍和使用

admin 2024年2月16日00:10:19评论7 views字数 1832阅读6分6秒阅读模式

映射(Map)是Go语言中的一种内置数据结构,用于存储键值对的集合,类似于字典或关联数组。

每个键都是唯一的并且必须为数值类型、字符串和指针,而每个键对应一个值。

词频统计

现在我们要对一个文本文件的内容进行词频统计。思路就获取每个单词在文件中出现的次数。这样我们就要构建一个词典,这个词典我们就可以使用map。

// 定义一个词典,key是词、value中是词出现的频次dic := map[string]int

第二步,我们就要获取词的内容,分词后,判断该词是否在词典中,不在就缓存它,在的话频次增加

cnt, err := os.ReadFile("test.txt")if err != nil {    log.Fatal(err)}// 定义词频统计dict := make(map[string]int)// 分词wordsLength := strings.Fields(string(cnt))for _, word := range wordsLength {    count, ok := dict[word]    if ok {        dict[word] = count + 1    } else {        dict[word] = 1    }}for word, counts := range dict {    fmt.Println(word, counts)}

输出结果

golang基础08:映射(map)的介绍和使用

上面虽然实现了简单的词频统计,但每个单词都用空格自己分好的了。如果我们想要中文语句分词,那就要使用第三方分词库,那就要调用第三方分词包了

比如常用的jieba、gse、也可以使用nlp相关的机器学习相应的包进行分词。

map的声明及基本用法

声明或定义一个map,进行初始化

var grade map[string]intgrade = map[string]int{"xiaozhu":80,"xiaoli":90}var grade2 = map[string]int{"xiaozhu":80,"xiaoli":90}//  声明并初始化一个map,同上面相同grade3 := map[string]int{"xiaozhu":80,"xiaoli":90}// 也可以使用make函数grade4 := make(map[string]int)

map的基本操作:添加键值、删除键、更新键值对、循环查找等

// 创建一个空映射students := make(map[string]int)// 添加键值对students["Alice"] = 90students["Bob"] = 85students["Charlie"] = 95// 更新键值对students["Alice"] = 92// 删除键值对delete(students, "Bob")// 检测键的存在性score, ok := students["Charlie"]if ok {    fmt.Println("Charlie's score:", score)} else {    fmt.Println("Charlie's score not found")}// 遍历映射for name, score := range students {    fmt.Printf("%s's score: %dn", name, score)}

通过前文提的闭包和map很容易在代码执行层增加缓存功能

func cache(prefix string) func(y int) int {  mp := make(map[string]int)  return func(y int) int {    key := prefix + ":" + strconv.Itoa(y)    if val, ok := mp[key]; ok {      fmt.Println("来自缓存", key)      return val    }    cal := 200 + y    mp[key] = cal    fmt.Println("为记录缓存")    return cal  }}func main() {  c := cache("user")  fmt.Println(c(100))  fmt.Println(c(200))  fmt.Println(c(100))}

输出内容如下:

golang基础08:映射(map)的介绍和使用

其它章节内容:

Golang安装指南:一步步带你轻松搭建Go开发环境

Golang魅力探秘:运算符、数值类型和输入输出的精彩世界

golang基础03:动手实现聊天机器人

golang基础04: 控制流的使用示例

golang基础06:一场选秀活动,让你彻底掌握数组和切片的用法

golang基础07:什么是函数?函数的如何定义和使用?详细讲解golang函数

原文始发于微信公众号(数据安全治理技术):golang基础08:映射(map)的介绍和使用

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月16日00:10:19
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   golang基础08:映射(map)的介绍和使用http://cn-sec.com/archives/2164530.html

发表评论

匿名网友 填写信息