4

stringGo 中的 a 就像Cchar*中的 a (或 a char[])还是stringC++ 中的类...或其他什么?

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

4

2 回答 2

17

go中的一个字符串用C中的这个结构表示

struct String
{
    byte*   str;
    intgo   len;
};

指针指向实际的str字符串数据,但这不是以空值结尾的——长度保存在len成员中。

因此,在 C 语言中,go 字符串与原始类型相差甚远,它是一个指针、一个长度和一个内存区域。

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

于 2013-05-31T08:52:21.483 回答
6

该类型的文档string说:

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

它们是不可变的,这似乎使它们不像您所比较的 C 概念,而更像是真正含义的const char []地方。constconst

任何东西都可以是编程语言中的原始类型,这取决于设计者。“成为原始人”并不一定意味着实际上是原始人。:)

于 2013-05-31T07:46:10.370 回答