In Go spec is written:
Strings are immutable: once created, it is impossible to change the
contents of a string.
I have following code:
str := "hello"
fmt.Printf("%p
",&str) // 0x1040c128
fmt.Printf("%v
",str) // hello
ptr := &str
*ptr = "world"
fmt.Printf("%p
",&str) // 0x1040c128
fmt.Printf("%v
",str) // world
I would have expected &str
address was changed after *ptr = "world"
. As it would happen with Java, where we reassign String references.
What is 'immutability' here?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…