Go中的字符串是什么?

时间:2013-05-31 07:41:22

标签: go

Go中的string是C中的char*(或char[])或C ++中的类string还是其他?

我不明白字符串是如何成为原始类型的。

2 个答案:

答案 0 :(得分:17)

go中的字符串在C

中表示为by this structure
struct String
{
    byte*   str;
    intgo   len;
};

str指针指向实际的字符串数据,但这不是空终止 - 长度保存在len成员中。

因此,在C术语中,go字符串距离基本类型很远,它是指针,长度和内存区域。

但是Go不是C,并且所有这些实现细节对于Go程序是不可见的。在Go中,字符串原始的不可变类型。

答案 1 :(得分:6)

The documentation for the type string说:

  

string是8位字节的所有字符串的集合,通常但不一定代表UTF-8编码的文本。字符串可以为空,但不能为零。字符串类型的值是不可变的。

它们是不可变的,这似乎使它们不像你比较的C概念,更像是const char [] const真正意味着const

任何东西都可以是编程语言中的原始类型,这取决于设计师。 “作为一个原始人”并不一定意味着实际存在,你知道,原始。 :)