Go中的string
是C中的char*
(或char[]
)或C ++中的类string
还是其他?
我不明白字符串是如何成为原始类型的。
答案 0 :(得分:17)
go中的字符串在C
中表示为by this structurestruct 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
。
任何东西都可以是编程语言中的原始类型,这取决于设计师。 “作为一个原始人”并不一定意味着实际存在,你知道,原始。 :)