go语言map、实现set

简介: go语言map、实现set

一、map定义、访问、遍历

package map_test
 
import "testing"
 
//map
func TestMap(t *testing.T) {
  //定义并初始化
  m := map[string]int{"one": 1, "two": 2, "three": 3}
  t.Log(m["one"])
  t.Logf("m len=%d", len(m))
  //定义
  m1 := map[string]int{}
  //添加元素
  m1["four"] = 4
  //使用make定义,合理的初始容量,提交性能
  m2 := make(map[string]int, 10)
  t.Log(m, m1, m2)
}
 
//map访问的key不存在是,仍会返回零值,不能通过nil来判断元素是否存在
func TestAccessNotExistingKey(t *testing.T) {
  //创建map
  m1 := map[int]int{}
  t.Log(m1[1])
  m1[2] = 0
  t.Log(m1[2])
  //使用ok判断是否存在
  if _, ok := m1[3]; ok {
    t.Log("key 3 is existing.")
  } else {
    t.Log("key 3 is not existing.")
  }
}
 
//遍历
func TestTravelMap(t *testing.T) {
  m := map[string]int{"one": 1, "two": 2, "three": 3}
  for key, value := range m {
    t.Log(key, value)
  }
}
=== RUN   TestMap
    map_test.go:9: 1
    map_test.go:10: m len=3
    map_test.go:17: map[one:1 three:3 two:2] map[four:4] map[]
--- PASS: TestMap (0.00s)
=== RUN   TestAccessNotExistingKey
    map_test.go:24: 0
    map_test.go:26: 0
    map_test.go:31: key 3 is not existing.
--- PASS: TestAccessNotExistingKey (0.00s)
=== RUN   TestTravelMap
    map_test.go:39: three 3
    map_test.go:39: one 1
    map_test.go:39: two 2
--- PASS: TestTravelMap (0.00s)
PASS

二、map值使用函数

func TestMapWithFunValue(t *testing.T) {
  m := map[int]func(op int) int{}
  m[1] = func(op int) int { return op }
  m[2] = func(op int) int { return op * op }
  m[3] = func(op int) int { return op * op * op }
  t.Log(m[1](2), m[2](2), m[3](2))
}
=== RUN   TestMapWithFunValue
    map_ext_test.go:11: 2 4 8
--- PASS: TestMapWithFunValue (0.00s)
PASS

三、map实现set

//map实现set
func TestMapForSet(t *testing.T) {
  mySet := map[int]bool{}
  //添加
  mySet[1] = true
  n := 6
  //判断是否存在
  if mySet[n] {
    t.Logf("%d is existing", n)
  } else {
    t.Logf("%d is not existing", n)
  }
  //  输出长度
  t.Log(len(mySet))
  //  删除元素
  delete(mySet, 1)
 
}
=== RUN   TestMapForSet
    map_ext_test.go:24: 6 is not existing
    map_ext_test.go:27: 1
--- PASS: TestMapForSet (0.00s)
PASS
相关文章
|
17天前
|
存储 Go 索引
go语言中数组和切片
go语言中数组和切片
27 7
|
17天前
|
Go 开发工具
百炼-千问模型通过openai接口构建assistant 等 go语言
由于阿里百炼平台通义千问大模型没有完善的go语言兼容openapi示例,并且官方答复assistant是不兼容openapi sdk的。 实际使用中发现是能够支持的,所以自己写了一个demo test示例,给大家做一个参考。
|
17天前
|
程序员 Go
go语言中结构体(Struct)
go语言中结构体(Struct)
92 71
|
16天前
|
存储 Go 索引
go语言中的数组(Array)
go语言中的数组(Array)
100 67
|
19天前
|
Go 索引
go语言for遍历数组或切片
go语言for遍历数组或切片
89 62
|
17天前
|
算法
你对Collection中Set、List、Map理解?
你对Collection中Set、List、Map理解?
52 18
你对Collection中Set、List、Map理解?
|
10天前
|
存储 缓存 安全
只会“有序无序”?面试官嫌弃的List、Set、Map回答!
小米,一位热衷于技术分享的程序员,通过与朋友小林的对话,详细解析了Java面试中常见的List、Set、Map三者之间的区别,不仅涵盖了它们的基本特性,还深入探讨了各自的实现原理及应用场景,帮助面试者更好地准备相关问题。
48 20
|
17天前
|
存储 Go
go语言中映射
go语言中映射
32 11
|
19天前
|
Go
go语言for遍历映射(map)
go语言for遍历映射(map)
29 12
|
18天前
|
Go 索引
go语言使用索引遍历
go语言使用索引遍历
26 9
下一篇
DataWorks