Go:数组字符串“两个字”值

jmo0nnb3  于 2023-09-28  发布在  Go
关注(0)|答案(1)|浏览(74)

我对Go中与string数组相关的“两个字”值感到非常困惑和好奇。
举例来说:

var strings [5]string
strings[0] = "Apple"

声明strings,当分配另一个string时,它将是复制的两个字的值。
有人能帮我理解一下这里的“两个字”是什么意思吗?如果有/有资源,我可以看看,这将是一个很大的帮助。

hlswsv35

hlswsv351#

正如@freeman所提到的,在golang中,字符串是一个两个字的数据结构,一个是指向字符串值的实际位置的指针,另一个是指定该字符串的字符数的长度。因此,当你这样赋值时:

strings[0] = "Apple"

你实际上是在给这个字符串赋值。如果你不想复制这两个字,你必须使用指针:

var strings [5]*string
apple := "Apple"
strings[0] = &apple

所以,你只需要复制字符串的指针,如果你改变了strings[0]元素的值,字符串本身也会被修改。如果你对go中字符串的实现感兴趣,here是一个很好的解释。

相关问题