ブール型
Go では、ブール値の型はboolで、値は true または false で、デフォルトは false です。
// 示例代码
var isActive bool // 全局变量声明
var enabled, disabled = true, false // 忽略类型的声明
func test() {
var available bool // 一般声明
valid := false // 简短声明
available = true // 赋值操作
}
数値型
整数には、符号なしと符号付きの 2 種類があります。Go は int と uint の両方をサポートしており、どちらの型も同じ長さを持ちますが、具体的な長さは異なるコンパイラの実装によって異なります。現在の gcc および gccgo コンパイラは、32 ビット プラットフォームと 64 ビット プラットフォームの両方で int と uint に 32 ビットを使用しますが、将来的には 64 ビット プラットフォームでは 64 ビットに増加する可能性があります。Go には、桁数を直接定義する型もあります: rune、int8、int16、int32、int64、および byte、uint8、uint16、uint32、uint64。このうち、 rune は int32 のエイリアス、 byte は uint8 のエイリアスです。
注意すべき点の 1 つは、これらのタイプの変数は、値を割り当てたり相互に操作したりすることができないことです。そうしないと、コンパイラはコンパイル中にエラーを報告します。
次のコードはエラーを生成します。
var a int8
var b int32
c:=a + b
また、int の長さは 32 ビットですが、int と int32 は互換性がありません。
浮動小数点数には float32 と float64 (float 型はありません) の 2 種類があり、デフォルトは float64 です。
Go は複数形もサポートしています。デフォルトのタイプは complex128 (64 ビット実数 + 64 ビット虚数) です。もっと小さいものが必要な場合は、
complex64 (32 ビット実数 + 32 ビット虚数) もあります。複素数の形式は RE + IMi です。RE は実数部、IM は虚数部、最後の i は虚数単位です。複数の数値を使用した例を次に示します。
var c complex64 = 5+5i
//output: (5+5i)
fmt.Printf("Value is: %v", c)
弦
Go の文字列は UTF-8 文字セットを使用してエンコードされます。文字列は二重引用符 ("") またはバックティック () のペアで定義され
、その型は文字列です。
// 示例代码
var frenchHello string // 声明变量为字符串的一般方法
var emptyString string = "" // 声明了一个字符串变量,初始化为空字符串
func test() {
no, yes, maybe := "no", "yes", "maybe" // 简短声明,同时声明多个变量
japaneseHello := "Ohaiou" // 同上
frenchHello = "Bonjour" // 常规赋值
}
Go では文字列は不変です。たとえば、次のコードはコンパイル時にエラーを報告します。
var s string = "hello"
s[0] = 'c'
しかし、本当に変更したい場合はどうすればよいでしょうか? 次のコードでこれを実現できます。
s := "hello"
c := []byte(s) // 将字符串 s 转换为 []byte 类型
c[0] = 'c'
s2 := string(c) // 再转换回 string 类型
fmt.Printf("%s\n", s2)
Go で + 演算子を使用して 2 つの文字列を連結できます。
s := "hello,"
m := " world"
a := s + m
fmt.Printf("%s\n", a)
文字列の変更は次のように記述することもできます。
s := "hello"
s = "c" + s[1:] // 字符串虽不能更改,但可进行切片操作
fmt.Printf("%s\n", s)
複数行の文字列を宣言したい場合はどうすればよいでしょうか? これはバッククォートを使用して宣言できます。
m := `hello
world`
バッククォートで囲まれた文字列はRaw string、つまりコード内の文字列の形式が印刷時の形式であり、文字エスケープがなく、改行がそのまま出力されます。
エラーの種類
Go にはエラー メッセージを処理するために特別に使用される組み込みのエラー タイプがあり、Go のパッケージにはエラーを処理するパッケージ エラーもあります。
err := errors.New("emit macho dwarf: elf header corrupted")
if err != nil {
fmt.Print(err)
}