字符串如何存储在GO数组中?

时间:2017-05-08 16:17:13

标签: arrays string go

在浏览GO之后,我遇到了以下代码:

var a [2]string
a[0] = "Hello"
a[1] = "World"

因此,数组的长度是不可变的,并在声明数组时设置。但是你可以在其中存储任何大小的字符串。

你为什么这样做?

2 个答案:

答案 0 :(得分:1)

字符串就像只读字节片。所以这段代码的工作原因是因为数组只需要为指针和一些元数据(字符串的长度)分配空间。

请参阅此处的字符串部分(位于底部):

https://blog.golang.org/slices

答案 1 :(得分:0)

在Go中,字符串是一个固定长度的结构,包含一个长度和一个指向字节数组的指针。

所以var a [2]string为两个这样的结构分配一个带空格的数组。

a[0] = "Hello"分配另一个数组来存储" Hello",并将指针指向此,并将长度放入a[0]