web-dev-qa-db-ja.com

Goでnullで終了する文字列を作成する方法はありますか?

Goでnullで終了するstringを作成する方法はありますか?

私が現在試しているのはa:="golang\0"しかし、コンパイルエラーが表示されています:

non-octal character in escape sequence: "
11
Yash Srivastava

仕様:文字列リテラル:

引用符の間のテキストはリテラルの値を形成し、バックスラッシュエスケープは ルーンリテラル\'は違法であり、\"は合法である場合を除く)のように解釈されます。同じ制限。 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]
32
icza