🐈
Goの基本(基本型)
基本型
ゼロ値
宣言されたが値が割り当てられていない変数に対してはゼロ値が割り当てられる。
リテラル
数値、文字などを直に示したもの。
- 整数リテラル
- 通常は10進数
- 頭に0bを置くことで2進数(bynary)
- 頭に0oを置くことで8進数(octal)
- 頭に0xを置くことで16進数(hexadeciaml)
- 整数リテラルの任意の場所にアンダースコア「_」が配置可能
- 1_234 のように可読性のために用いられる
- 浮動小数点数リテラル
- 一般的な少数の他、指数表記(6.03e23)も可能
- 0xを置くことで16進数
- 整数リテラル同様アンダースコアが配置可能
- runeリテラル
- 文字を表し先頭と最後に「'」を置く
- 文字のUnicode文字(例:'a')
- 8ビット8進数(例:'\141')
- 8ビット16進数(例:'\x61')
- 16ビット16進数(例:'\u0061')
- 32ビットUnicode(例:'\U00000061')
- 「\」(バックスラッシュ)でエスケープされたruneリテラルも
- 改行('\n')
- タブ('\t')
- 一重引用符(''')
- 二重引用符('"')
- バックスラッシュ('')
- 文字列リテラル
- 「"」で囲む「解釈される文字列リテラル」
- 「`」(バッククォート)で囲む「生の文字列リテラル」
- 文字を表し先頭と最後に「'」を置く
boolean
true
or false
booleanのゼロ値はfalse
数値型
整数型
型 | 値の範囲 |
---|---|
int8 | -128 〜 127 |
int16 | -32768 〜 32767 |
int32 | -2147483648 〜 2147483647 |
int64 | -9223372036854775808 〜 9223372036854775807 |
uint8 | 0 〜 255 |
uint16 | 0 〜 65535 |
uint32 | 0 〜 4294967295 |
uint64 | 0 〜 18446744073709551615 |
特別な整数型
- byte
- uint8の別名
- int
- CPUのビットサイズに応じてint32かint64になる
- uint
- intの符号なし(0以上)
- rune
- ひとつの「Unicodeコードポイント」を表現する。
- uintptr
- メモリを操作して、C言語のようなポイント操作などを可能にするためのもの
rune
実態としてはint32の別名。Unicodeのコードポイント(10進数)を表現する場合はrune型を使用する。
下記コードで、🐈がコードポイントに変換される事がわかる。
var s string = "🐈"
var rs []rune = []rune(s)
fmt.Println(rs) // [128008]
uintptr
(よくわからないので後日調べる)
浮動小数点数型
型 | 最大値(絶対値) | (非ゼロの)最小値(絶対値) |
---|---|---|
float32 | 3.40282346638528859811704183484516925440e+38 | 1.401298464324817070923729583289916131280e-45 |
float64 | 1.797693134862315708145274237317043567981e+308 | 4.940656458412465441765687928682213723651e-324 |
複素数型
複素数とは、実数と虚数を組み合わせたもの(それ以上の事はあまり理解できていない)
// 複素数型
x := complex(2.5, 3.1)
fmt.Println(x) // (2.5+3.1i)
// 実部の取り出し
r := real(x)
fmt.Println(r) // 2.5
// 虚部の取り出し
i := imag(x)
fmt.Println(i) // 3.1
Discussion