Go 语言是否像 Java 中那样对字符串使用 Copy-on-write?即,如果我按值将字符串传递给方法并且从不更改它将分配内存并复制字符串(这将是时间效率低下的),或者它只会引用单个副本。
问问题
4866 次
2 回答
21
它不是写时复制,因为字符串是不可变的。但是共享字符串也不会复制底层内存区域。在 Go 中,字符串表示为(长度,数据)对。如果你传递一个字符串,Go 将复制长度和指针,但不复制指向的数据。
有关更多信息,请参阅golang-nuts 上的此最新主题。
于 2011-12-16T10:18:54.370 回答
2
Go 类型string
实际上等同于java.lang.String
. 这两个实现(在 Go 运行时,在 JVM 中)也很相似,尽管它们并不完全相同。在向函数和方法传递参数方面,Go 字符串的性能类似于 Java 字符串。
于 2011-12-16T13:35:26.280 回答