Go 的 map
334 字
2 分钟
Go 的 map
map 是引用类型,可以使用如下声明:
map 不是”简单结构”,是复杂的引用类型,必须 make 分配底层哈希表内存。
var map1 map[keytype]valuetypevar map1 map[string]int在声明的时候不需要知道 map 的长度,map 是可以动态增长的。
未初始化的 map 的值是 nil。
key 可以是任意可以用 == 或者 != 操作符比较的类型,比如 string、int、float32(64)。所以数组、切片和结构体不能作为 key (译者注:含有数组切片的结构体不能作为 key,只包含内建类型的 struct 是可以作为 key 的),但是指针和接口类型可以。如果要用结构体作为 key 可以提供 Key() 和 Hash() 方法,这样可以通过结构体的域计算出唯一的数字或者字符串的 key。
value 可以是任意类型的;通过使用空接口类型(详见第 11.9 节),我们可以存储任意值,但是使用这种类型作为值时需要先做一次类型断言(详见第 11.3 节)。
package mainimport "fmt"
func main() { var mapLit map[string]int //var mapCreated map[string]float32 var mapAssigned map[string]int
mapLit = map[string]int{"one": 1, "two": 2} mapCreated := make(map[string]float32) mapAssigned = mapLit
mapCreated["key1"] = 4.5 mapCreated["key2"] = 3.14159 mapAssigned["two"] = 3
fmt.Printf("Map literal at \"one\" is: %d\n", mapLit["one"]) fmt.Printf("Map created at \"key2\" is: %f\n", mapCreated["key2"]) fmt.Printf("Map assigned at \"two\" is: %d\n", mapLit["two"]) fmt.Printf("Map literal at \"ten\" is: %d\n", mapLit["ten"])}文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
相关文章智能推荐
1
Go 的 Small Interface 设计理念
编程语言从编译模型看 Go 与 C++ 契约方式的差异:消费者定义小接口与隐式实现的哲学。
2
Gin 模型绑定与验证
编程语言Gin 的两类绑定方法(Must/Should)与 binding:'required' 字段校验用法。
3
Python StrEnum 与 Literal 的区别
编程语言StrEnum(运行时枚举)与 Literal(纯类型约束)的差异、对比表与 FastAPI/Pydantic 选型建议。
4
Grafana 可视化与监控
云原生与运维Grafana 的定位、常见数据源与 Grafana + Prometheus 经典监控链路。
5
微服务之间如何传递 trace
后端开发跨服务传递的是 trace 上下文而非 tracer:HTTP header、gRPC metadata 与 MQ 消息头的标准做法。
随机文章随机推荐











