Goでnullで終了するstring
を作成する方法はありますか?
私が現在試しているのはa:="golang\0"
しかし、コンパイルエラーが表示されています:
non-octal character in escape sequence: "
引用符の間のテキストはリテラルの値を形成し、バックスラッシュエスケープは ルーンリテラル (
\'
は違法であり、\"
は合法である場合を除く)のように解釈されます。同じ制限。 3桁の8進数(\nnn
)および2桁の16進数(\xnn
)のエスケープは、結果の文字列の個々のバイトを表します。他のすべてのエスケープは、個々の文字の(おそらくマルチバイトの)UTF-8エンコーディングを表します。
したがって、\0
は不正なシーケンスであるため、3桁の8進数を使用する必要があります。
s := "golang\000"
または、16進コード(2桁の16進数字)を使用します。
s := "golang\x00"
またはUnicodeシーケンス(4桁の16進数):
s := "golang\u0000"
例:
s := "golang\000"
fmt.Println([]byte(s))
s = "golang\x00"
fmt.Println([]byte(s))
s = "golang\u0000"
fmt.Println([]byte(s))
出力:すべて0コードバイトで終わります( Go Playground で試してください)。
[103 111 108 97 110 103 0]
[103 111 108 97 110 103 0]
[103 111 108 97 110 103 0]