127

69 ではなく "E" 出力を取得するには?

package main

import "fmt"

func main() {
    fmt.Print("HELLO"[1])
}

Golangには、charをバイトに、またはその逆に変換する機能がありますか?

4

10 に答える 10

188

解釈された文字列リテラルは、個々の文字の UTF-8 エンコーディング (おそらくマルチバイト) を使用した、二重引用符 "" の間の文字シーケンスです。UTF-8 では、ASCII 文字は最初の 128 Unicode 文字に対応するシングルバイトです。文字列は、バイトのスライスのように動作します。ルーンは、Unicode コード ポイントを識別する整数値です。したがって、

package main

import "fmt"

func main() {
    fmt.Println(string("Hello"[1]))              // ASCII only
    fmt.Println(string([]rune("Hello, 世界")[1])) // UTF-8
    fmt.Println(string([]rune("Hello, 世界")[8])) // UTF-8
}

出力:

e
e
界

読んだ:

Conversionsのプログラミング言語仕様セクションに移動します。

The Go ブログ: Go の文字列、バイト、ルーン、文字

于 2013-02-22T08:51:37.360 に答える
24

これはどうですか?

fmt.Printf("%c","HELLO"[1])

Peter が指摘するように、ASCII 以上のものを許可するには:

fmt.Printf("%c", []rune("HELLO")[1])
于 2013-02-22T07:08:36.687 に答える
8

Go には実際には文字型がありません。byte は ASCII 文字によく使用され、rune は Unicode 文字に使用されますが、どちらも整数型 (uint8 と int32) の単なるエイリアスです。したがって、それらを数字ではなく文字として強制的に印刷したい場合は、 を使用する必要がありますPrintf("%c", x)%c形式の指定は、任意の整数型で機能します。

于 2013-02-22T16:18:49.190 に答える
5

char を文字列として解釈する一般的な解決策はstring("HELLO"[1]).

もちろん、リッチのソリューションも機能します。

于 2013-02-22T07:29:58.120 に答える