Golang では、文字列型は不変です。これは、文字列が作成されると、その場で変更することはできず、新しい文字列のみを作成できることを意味します。文字列を変更する場合は、変更する前に、[]byte や []rune などの変数タイプに変換する必要があります。
文字列型で「同様の」変数効果を実現する方法をいくつか紹介しましょう。
方法 1: 文字列を []byte または []rune タイプに変換する
文字列の特定の文字を変更する場合は、まず文字列を変数タイプに変換します。 []byte や []rune タイプなど。これは、[]byte または []rune 変換関数を使用して実現できます。
サンプル コード:
str := "Hello, Golang!" bytes := []byte(str) bytes[7] = 'W' str = string(bytes) fmt.Println(str)
上記のコードは、文字列を []byte 型に変換し、7 番目の文字 'H' を 'W' に置き換え、最後に結果を文字 Serial に再変換します。そしてパラレル出力。
同じ操作は、[]ルーン タイプを使用しても実現できます。
str := "Hello, Golang!" runes := []rune(str) runes[7] = '界' str = string(runes) fmt.Println(str)
今回は、7 番目の文字を漢字の「境界」に置き換えます。
文字列は UTF-8 エンコーディングでメモリに保存されるため、[]byte 型を使用して文字列内の文字を変更する場合はエンコーディングの問題に注意する必要があることに注意してください。
方法 2: strings パッケージの Replace 関数を使用する
文字列内の特定の文字を単純に置換するだけの場合は、strings パッケージの Replace 関数を使用できます。
サンプルコード:
str := "Hello, Golang!" str = strings.Replace(str, "Golang", "world", -1) fmt.Println(str)
上記のコードは、文字列内の「Golang」を「world」に置き換えます。
Replace 関数の 3 番目のパラメーターは置換の数です。-1 はすべての一致を置換することを意味します。
方法 3: bytes パッケージの Buffer タイプを使用する
文字列の結合など、文字列に対して複数の操作を実行する必要がある場合は、bytes パッケージの Buffer タイプを使用できます。
サンプル コード:
var buffer bytes.Buffer buffer.WriteString("Hello") buffer.WriteString(" ") buffer.WriteString("Golang!") fmt.Println(buffer.String())
上記のコードでは、Buffer タイプを使用して文字列の結合操作を実装しています。
方法 4: strings.Builder 型を使用する
Go 言語バージョン 1.10 以降、文字列の結合と変更を実現するために string.Builder 型が追加されました。
サンプル コード:
var builder strings.Builder builder.WriteString("Hello") builder.WriteByte(',') builder.WriteString("Golang!") builder.WriteRune('界') fmt.Println(builder.String())
上記のコードは、strings.Builder 型を使用して文字列のスプライシングと変更操作を実装し、Unicode 文字用の WriteRune メソッドも提供します。
方法 5: strconv パッケージの []byte 型と Append シリーズ関数を使用する
他の種類のデータを文字列に変換する必要があり、高パフォーマンスと低メモリ操作が必要な場合は、 strconv パッケージでは、[]byte 型と Append シリーズ関数を使用できます。
サンプル コード:
var data []byte data = strconv.AppendBool(data, true) data = strconv.AppendInt(data, 1234, 10) data = strconv.AppendFloat(data, 3.14, 'f', 2, 64) data = strconv.AppendQuote(data, "Hello, Golang!") str := string(data) fmt.Println(str)
上記のコードは、strconv パッケージの AppendBool、AppendInt、AppendFloat、AppendQuote 関数を使用して、bool、int、float、string 型のデータをそれぞれ []byte に変換します。データの型を変換し、最終的に文字列に変換することで複数のデータ型の結合操作を実現します。
Append 一連の関数を使用する場合は、十分なバッファ領域を手動で割り当てる必要があることに注意してください。
概要:
上記は文字列型を変数にするいくつかの方法であり、特定のニーズに応じてさまざまな方法を選択できます。これらのメソッドを使用する場合は、予期しない問題が発生しないように注意してコードを作成してください。
以上がgolangでstring=を作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。