🐈

Goの基本(基本型)

2025/02/11に公開

基本型

ゼロ値

宣言されたが値が割り当てられていない変数に対してはゼロ値が割り当てられる。

リテラル

数値、文字などを直に示したもの。

  • 整数リテラル
    • 通常は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]

https://www.compart.com/en/unicode/U+1F408

uintptr

(よくわからないので後日調べる)

浮動小数点数型

最大値(絶対値) (非ゼロの)最小値(絶対値)
float32 3.40282346638528859811704183484516925440e+38 1.401298464324817070923729583289916131280e-45
float64 1.797693134862315708145274237317043567981e+308 4.940656458412465441765687928682213723651e-324

複素数型

複素数とは、実数と虚数を組み合わせたもの(それ以上の事はあまり理解できていない)

https://atarimae.biz/archives/500

// 複素数型
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