Golang中可直接使用 &
操作符取地址的对象,就是可寻址的(Addressable)。
func main() {
site := "tizi365.com"
fmt.Println(&site)
// 输出: 0xc000010001
}
程序运行不会报错,说明 site 这个变量是可寻址的。
Go语言中,常量、字面量、函数、map中的元素都是不可寻址的,否则会直接报错,下面例子都是错误的。
常量例子:
import "fmt"
const VERSION = "1.0"
func main() {
fmt.Println(&VERSION)
}
函数例子:
func getStr() string {
return "iswbm"
}
func main() {
fmt.Println(&getStr)
// cannot take the address of getStr
}
map 中的元素:
func main() {
p := map[string]string {
"name": "tizi365",
}
fmt.Println(&p["name"])
// cannot take the address of p["name"]
}