1 回答
TA贡献1846条经验 获得超7个赞
为什么数组中的前 3 个元素是空/空映射?
Go 编程语言规范
制作切片、地图和通道
内置函数 make 采用类型 T,它必须是切片、映射或通道类型,后面可选地跟一个特定于类型的表达式列表。它返回类型 T(不是 *T)的值。内存按照初始值部分中的描述进行初始化。
Call Type T Result
make(T, n) slice slice of type T with length n and capacity n
make(T, n, m) slice slice of type T with length n and capacity m
m
的切片map
m = make([]map[string]Vertex, 3)
相当于
m = make([]map[string]Vertex, 3, 3)
它应该是
m = make([]map[string]Vertex, 0, 3)
例如,
package main
import "fmt"
type Vertex struct {
Lat, Long float64
}
var m []map[string]Vertex
var m1 map[string]Vertex
func main() {
m = make([]map[string]Vertex, 0, 3)
fmt.Println(len(m), cap(m))
m1 = make(map[string]Vertex)
m1["Bell Labs"] = Vertex{
40.68433, -74.39967,
}
m = append(m, m1)
fmt.Println(m)
fmt.Println(len(m), cap(m))
fmt.Println(m[0]["Bell Labs"])
}
游乐场:https://play.golang.org/p/i9f0rrCrtY_5
输出:
0 3
[map[Bell Labs:{40.68433 -74.39967}]]
1 3
{40.68433 -74.39967}
- 1 回答
- 0 关注
- 100 浏览
添加回答
举报