go 操作符& 为什么不能直接作用于 值,如 &"111"

package main

import (
    "fmt"
)

func main() {
    fmt.Println("Hello, playground")
    i := "22"
    fmt.Println(&i) //输出指针地址
    
    fmt.Println(&"22") // error : ./prog.go:12:14: cannot take the address of "22"

}
阅读 2.3k
2 个回答

因为”22“没有地址(address_operators),所有”22”不能寻址。

如果你想知道为什么“22”没有地址,那涉及到怎么存值的问题,推荐看看《CSAPP》这本书。

&是取变量的地址的,直接写出来的值叫做字面量是没有地址的,如1,2.3,A{a:1,b:2}等。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题