我对Go中与string数组相关的“两个字”值感到非常困惑和好奇。举例来说:
string
var strings [5]string strings[0] = "Apple"
声明strings,当分配另一个string时,它将是复制的两个字的值。有人能帮我理解一下这里的“两个字”是什么意思吗?如果有/有资源,我可以看看,这将是一个很大的帮助。
strings
hlswsv351#
正如@freeman所提到的,在golang中,字符串是一个两个字的数据结构,一个是指向字符串值的实际位置的指针,另一个是指定该字符串的字符数的长度。因此,当你这样赋值时:
strings[0] = "Apple"
你实际上是在给这个字符串赋值。如果你不想复制这两个字,你必须使用指针:
var strings [5]*string apple := "Apple" strings[0] = &apple
所以,你只需要复制字符串的指针,如果你改变了strings[0]元素的值,字符串本身也会被修改。如果你对go中字符串的实现感兴趣,here是一个很好的解释。
1条答案
按热度按时间hlswsv351#
正如@freeman所提到的,在golang中,字符串是一个两个字的数据结构,一个是指向字符串值的实际位置的指针,另一个是指定该字符串的字符数的长度。因此,当你这样赋值时:
你实际上是在给这个字符串赋值。如果你不想复制这两个字,你必须使用指针:
所以,你只需要复制字符串的指针,如果你改变了strings[0]元素的值,字符串本身也会被修改。如果你对go中字符串的实现感兴趣,here是一个很好的解释。