在go(golang)中将指针传递给字符串有什么意义?

问题描述 投票:6回答:1

我正在阅读以下关于go(golang)字符串的conversation。 go中的字符串只是指向(只读)数组和长度的指针。因此,当您将它们传递给函数时,指针将作为值而不是整个字符串传递。因此,我想到,如果这是真的,那么为什么你甚至被允许定义为一个带有*string作为参数的签名的函数?如果字符串已经加上,则数据是不可变/只读的,因此无论如何都无法更改它。如果它已经在内部执行了那么允许将指针传递给字符串有什么意义呢?

string pointers go
1个回答
16
投票

您将指针传递给包含该字符串的“对象”,然后您可以为其指定不同的内容。

示例:http://play.golang.org/p/Gsybc7Me-5

func ps(s *string) {
    *s = "hoo"
}
func main() {
    s := "boo"
    ps(&s)
    fmt.Println(s)
}
© www.soinside.com 2019 - 2024. All rights reserved.