go(golang)で文字列へのポインターを渡す意味は何ですか?

2014-07-09 string pointers go

go(golang)文字列に関する次の会話を読んでいました。 goの文字列は、(読み取り専用)配列へのポインタと長さです。したがって、それらを関数に渡すと、ポインタは文字列全体ではなく値として渡されます。したがって、それが本当である場合、それは私に起こりました、それではなぜあなたは*stringを引数として取るシグネチャを持つ関数として定義することを許可されているのですか?文字列が既にプラスしている場合、データは不変/読み取り専用であるため、とにかく変更することはできません。とにかくそれがすでに内部でそれをしている場合、ポインタに文字列へのポインタを渡すことを許可することのポイントは何ですか?

Answers

別の文字列を割り当てることができるように、文字列を保持する「オブジェクト」へのポインタを渡します。

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

func ps(s *string) {
    *s = "hoo"
}
func main() {
    s := "boo"
    ps(&s)
    fmt.Println(s)
}

Related