Go中的字符串是什么?

ghi*_*igt 4 go

string在围棋就像是一个char*在C(或char[])或类string在C++ ...还是其他什么东西?

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

Nic*_*ood 17

go中的字符串 C中的此结构表示

struct String
{
    byte*   str;
    intgo   len;
};
Run Code Online (Sandbox Code Playgroud)

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

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

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


unw*_*ind 6

该类型的文档string说:

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

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

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