Go 文字列は不変ですが、ポインターを介して変更できます。 1. 文字列は値型であり、新しい変数が代入されると新しい値が作成されます。 2. ポインタは文字列を指し、その内容を変更できます。 3. 文字列を連結すると、元の文字列に影響を与えることなく新しいコピーが作成されます。
Go 言語では、文字列は非常に重要なデータ型です。テキストデータを保存するために使用されます。ただし、文字列が変更可能であるかどうかは、開発者の間で常に議論の対象となってきました。この記事では、Go における文字列の変更可能性を深く分析し、実際の事例を通してその本質を説明します。
Go では、文字列は値型です。つまり、新しい変数を割り当てると、新しい値が作成されます。例:
name := "John" anotherName := name
現時点では、anotherName
と name
は、異なるメモリ ユニットを指すコピーです。 anotherName
に加えられた変更は、name
の値には影響しません。
文字列自体は不変ですが、ポインターを使用して文字列の内容を変更することができます。ポインタは、変数のメモリ アドレスを参照するデータ型です。例:
package main import "fmt" func main() { name := "John" ptr := &name // 通过指针修改字符串 *ptr = "Jane" // 打印修改后的字符串 fmt.Println(name) // 输出:Jane }
上記のコードでは、ptr
は name
変数のメモリ アドレスを指します。 (*
を使用して) ポインターを逆参照することにより、ポイントされている変数を取得し、その内容を変更できます。
文字列の結合は、文字列を変更する一般的な操作です。 Go では、
演算子を使用して 2 つの文字列を連結できます。例:
name := "John" lastName := "Smith" fullName := name + " " + lastName // 输出:John Smith fmt.Println(fullName)
演算子は文字列の新しいコピーを作成することに注意してください。つまり、name
と lastName## の値は# は変更されません。
以上がGolang 文字列の背後にある秘密を明らかにする: 可変または不変の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。