当前位置: 首页 > 面试题库 >

Go语言是否使用字符串写时复制

林博厚
2023-03-14
问题内容

Go语言是否像Java一样对字符串使用写时复制?也就是说,如果我按值将字符串传递给方法并且从未更改,则它将分配内存并复制字符串(这将节省时间),或者仅引用单个副本。


问题答案:

它不是写时复制的,因为字符串是不可变的。但是共享一个字符串也不会复制基础内存区域。在Go中,字符串表示为(长度,数据)对。如果传递字符串,Go将复制长度和指针,但不复制所指向的数据。

有关更多信息,请参阅golang-nuts上的最新线程。



 类似资料:
  • 主要内容:定义字符串,字符串拼接符“+”,字符串实现基于 UTF-8 编码,定义多行字符串一个字符串是一个不可改变的字节序列,字符串可以包含任意的数据,但是通常是用来包含可读的文本,字符串是 UTF-8 字符的一个序列(当字符为 ASCII 码表上的字符时则占用 1 个字节,其它字符根据需要占用 2-4 个字节)。 UTF-8 是一种被广泛使用的编码格式,是文本文件的标准编码,其中包括 XML 和 JSON 在内也都使用该编码。由于该编码对占用字节长度的不定性,在Go语言中字符串也可能

  • 问题内容: 我正在尝试从C创建一个go字符串。我有指针和长度,所以如果我从go开始,可以调用该函数。 生成结构,所以我想知道是否可以直接使用它: 我在这里用它来控制我的生命。在随后作为参数传递给函数去: Go的垃圾收集器会尝试回收内存吗? 问题答案: Go的垃圾回收器不会尝试回收使用C内存分配器分配的内存。您所描述的应该是安全的。当然,您可能无法释放C内存,因为您不知道Go将在何时完成。

  • 本文向大家介绍Go语言写入字符串到文件的方法,包括了Go语言写入字符串到文件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Go语言写入字符串到文件的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Go语言程序设计有所帮助。

  • 本文向大家介绍Go语言使用字符串的几个技巧分享,包括了Go语言使用字符串的几个技巧分享的使用技巧和注意事项,需要的朋友参考一下 一、字符串底层就是一个字节数组 这真的非常重要,而且影响着下面的其他几个技巧。当你创建一个字符串时,其本质就是一个字节的数组。这意味着你可以像访问数组一样的访问单独的某个字节。例如,下面的代码逐个打印字符串中的每个字节以及对应字节数组中的每个字节: 这是一个很重要的知识,

  • 本文向大家介绍Objective-C语言使用C字符串,包括了Objective-C语言使用C字符串的使用技巧和注意事项,需要的朋友参考一下 示例 转换NSString为const char使用-[NSString UTF8String]: -[NSString cStringUsingEncoding:]如果您的字符串使用非UTF-8编码,则也可以使用。 对于反向路径,请使用-[NSString

  • 主要内容:适用于字符串构造的规则,字符串操作在R中的单引号或双引号中写入的任何值都将被视为字符串。在R内部将每个字符串存储在双引号内,即使您使用单引号创建它们。 适用于字符串构造的规则 字符串开头和结尾的引号应为双引号或双引号,他们不能混合。 双引号可以插入到以单引号开始和结尾的字符串中。 单引号可以插入到以双引号开始和结尾的字符串中。 双引号不能插入到以双引号开始和结尾的字符串中。 单引号无法插入到以单引号开始和结尾的字符串中。 有效字符