69 ではなく "E" 出力を取得するには?
package main
import "fmt"
func main() {
fmt.Print("HELLO"[1])
}
Golangには、charをバイトに、またはその逆に変換する機能がありますか?
解釈された文字列リテラルは、個々の文字の 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のプログラミング言語仕様セクションに移動します。
これはどうですか?
fmt.Printf("%c","HELLO"[1])
Peter が指摘するように、ASCII 以上のものを許可するには:
fmt.Printf("%c", []rune("HELLO")[1])
Go には実際には文字型がありません。byte は ASCII 文字によく使用され、rune は Unicode 文字に使用されますが、どちらも整数型 (uint8 と int32) の単なるエイリアスです。したがって、それらを数字ではなく文字として強制的に印刷したい場合は、 を使用する必要がありますPrintf("%c", x)
。%c
形式の指定は、任意の整数型で機能します。
char を文字列として解釈する一般的な解決策はstring("HELLO"[1])
.
もちろん、リッチのソリューションも機能します。