在Go 规范中写道:
字符串是不可变的:一旦创建,就不可能改变字符串的内容.
我有以下代码:
str := "hello"
fmt.Printf("%p\n",&str) // 0x1040c128
fmt.Printf("%v\n",str) // hello
ptr := &str
*ptr = "world"
fmt.Printf("%p\n",&str) // 0x1040c128
fmt.Printf("%v\n",str) // world
Run Code Online (Sandbox Code Playgroud)
我&str原本预计地址会改变*ptr = "world".正如Java所发生的那样,我们重新分配字符串引用.
什么是"不变性"?