use*_*368 45 dictionary pointers go
将一些地图定义为:
var valueToSomeType = map[uint8]someType{...}
var nameToSomeType = map[string]someType{...}
Run Code Online (Sandbox Code Playgroud)
我想要一个指向地图地址的变量(不要复制所有变量).我尝试使用:
valueTo := &valueToSomeType
nameTo := &nameToSomeType
Run Code Online (Sandbox Code Playgroud)
但在使用时valueTo[number],它显示
内部编译器错误:var没有类型,init:new
怎么弄?
编辑
另一个问题显示错误.
the*_*mue 99
地图是参考类型,因此它们总是通过引用传递.你不需要指针.
@Mue 的答案是正确的。
以下简单程序足以验证:
package main
import "fmt"
func main() {
m := make(map[string]string, 10)
add(m)
fmt.Println(m["tom"]) // expect nil ???
}
func add(m map[string]string) {
m["tom"] = "voldemort"
}
Run Code Online (Sandbox Code Playgroud)
这个程序的输出是
voldemort
Run Code Online (Sandbox Code Playgroud)
如果 map 是按值传递的,那么在函数 add() 中添加到 map 不会对 main 方法产生任何影响。但是我们看到了 add() 方法添加的值。这将验证映射的指针是否已传递给 add() 方法。
| 归档时间: |
|
| 查看次数: |
27855 次 |
| 最近记录: |