不可以寻址, 指的是不能通过&获得其地址。
golang中不能寻址的可以总结为:不可变的,临时结果和不安全的。只要符合其中任何一个条件,它就是不可以寻址的。
具体为:
常量的值。
基本类型值的字面量
算术操作的结果值
对各种字面量的索引表达式和切片表达式的结果值:
不过有一个例外,对切片字面量的索引结果值却是可寻址的。
对字符串变量的索引表达式和切片表达式的结果值。
对字典变量的索引表达式的结果值。
函数字面量和方法字面量,以及对它们的调用表达式的结果值。
结构体字面量的字段值,也就是对结构体字面量的选择表达式的结果值。
类型转换表达式的结果值。
类型断言表达式的结果值。
接收表达式的结果值。
所以,各种变量都是可以寻址的,比如
var e error
var c chan int
var m map[int]int
上述e,c,m都是可以取地址的
package main
import (
"errors"
"fmt"
)
func main(