golang では、文字列型は不変型です。つまり、その値を直接変更することはできません。ただし、シナリオでは、文字列型を変更可能な文字シーケンス (スライス) に変換する必要がある場合があります。この記事では、この変換を実現する 2 つの方法を紹介します。
方法 1: strings パッケージを使用する
strings パッケージは、golang 標準ライブラリの文字列処理パッケージであり、文字列をスライスに変換するメソッドを提供します。
import "strings" func StringToSlice(s string) []rune { return []rune(s) }
このメソッドではルーン タイプが使用されます。ルーン タイプは Unicode 文字を表し、中国語、日本語、韓国語、その他の言語の文字を含めることができます。文字列型をルーン型にキャストすることで、変更可能な文字列(スライス)を取得できます。
次は、このメソッドの使用法を示す簡単な例です:
package main import ( "fmt" "strings" ) func StringToSlice(s string) []rune { return []rune(s) } func main() { s := "hello world" sl := StringToSlice(s) sl[0] = 'H' fmt.Println(sl) fmt.Println(strings.ToUpper(string(sl))) }
プログラム出力:
[72 101 108 108 111 32 119 111 114 108 100] HELLO WORLD
StringToSlice 関数によって返されたスライスを strings.ToUpper に渡すことによって関数を使用すると、文字列をすべて大文字に変換できます。
方法 2: バイト スライスの使用
strings パッケージの使用に加えて、文字列型をバイト スライスに変換し、そのバイト スライスをルーン型スライスに変換することもできます。
func StringToSlice(s string) []rune { bs := []byte(s) rs := make([]rune, len(bs)) for i, b := range bs { rs[i] = rune(b) } return rs }
このメソッドでは、8 ビットの符号なし整数を表すバイト型スライスを使用します。文字列型をバイト型スライスにキャストすることで、バイト単位で格納されたシーケンスを取得できます。バイト型スライスを走査し、各要素をルーン型に変換し、最後にルーン型スライスを返します。
次は、このメソッドの使用例です:
package main import ( "fmt" ) func StringToSlice(s string) []rune { bs := []byte(s) rs := make([]rune, len(bs)) for i, b := range bs { rs[i] = rune(b) } return rs } func main() { s := "hello world" sl := StringToSlice(s) sl[0] = 'H' fmt.Println(sl) }
プログラム出力:
[72 101 108 108 111 32 119 111 114 108 100]
方法 1 と同様に、文字列を使用してスライスを文字列に変換することもできます。パッケージが提供する文字列操作関数は、文字列の大文字小文字の変換などの操作を実現します。
結論
一般に、文字列および文字シーケンスの処理には、strings パッケージによって提供される API を使用することをお勧めします。これは、パフォーマンスが向上するだけでなく、より多くの種類のセキュリティも提供されるためです。ただし、一部の特殊なケースでは、バイト スライスはさまざまなニーズに適応できる、より柔軟な処理方法を提供します。
以上がスライスする golang 文字列の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。