相关疑难解决方法(0)

不可变的字符串和指针地址

在Go 规范中写道:

字符串是不可变的:一旦创建,就不可能改变字符串的内容.

我有以下代码:

str := "hello"
fmt.Printf("%p\n",&str) // 0x1040c128
fmt.Printf("%v\n",str) // hello
ptr := &str
*ptr = "world"
fmt.Printf("%p\n",&str) // 0x1040c128
fmt.Printf("%v\n",str) // world  
Run Code Online (Sandbox Code Playgroud)

&str原本预计地址会改变*ptr = "world".正如Java所发生的那样,我们重新分配字符串引用.

什么是"不变性"?

string immutability go

4
推荐指数
1
解决办法
433
查看次数

golang:[] byte(string)vs [] byte(*string)

我很好奇为什么Golang没有提供[]byte(*string)方法.从性能的角度来看,不会[]byte(string)复制输入参数并增加更多的成本(虽然这看起来很奇怪,因为字符串是不可变的,为什么要复制它们)?

我是Go的新手,非常感谢任何澄清.

string type-conversion go slice

2
推荐指数
2
解决办法
1496
查看次数

标签 统计

go ×2

string ×2

immutability ×1

slice ×1

type-conversion ×1