Goの基本データ型

データ型とは

メモリ上に保存されたデータにアクセスするための変数名を通じて、コンピュータはデータを適切に解釈する必要がある。以下のようなコード例:

package main
import "fmt"
var (
    x int = 32
)
func main() {
    fmt.Println(x)
}

コンピュータ内部では0と1の組み合わせでデータを表現するが、型情報により:

  • 数値や文字列などの解釈方法を明確化
  • メモリ領域の使用目的を確定

整数型

符号付き・無符号型の種類

用途
int8/int16/int32/int64符号付き整数
uint8/uint16/uint32/uint64符号無し整数

特殊型

  • uint/int: アーキテクチャ依存(32bit/64bit)
  • uintptr: ポインタ格納用の無符号整数型

進数表記の例

package main
import "fmt"
var (
    a int = 0b1010      // 2進数
    b int = 037         // 8進数
    c int = 0x1A2B3C    // 16進数
)
func main() {
    fmt.Println(a, b, c)
}

浮動小数点型

IEEE 754規格に準拠したfloat32/float64が利用可能

package main
import "fmt"
var (
    pi float64 = 3.141592653589793
)
func main() {
    fmt.Println(pi)
}

複素数型

package main
import "fmt"
func main() {
    z := 5 + 3i
    fmt.Println(real(z), imag(z))  // 実部:5, 虚部:3
}

ブール型

true/falseのみを取る専用型。型変換や数値演算は不可。

文字列操作

エンコーディング

  • UTF-8をネイティブサポート
  • シングルクォート(')はrune型として扱われる

特殊文字のエスケープ

シーケンス意味
\n改行
\tタブ
\\"ダブルクォート

文字列操作関数

package main
import (
    "strings"
    "fmt"
)
func main() {
    s := "Go言語プログラミング"
    fmt.Println(strings.Contains(s, "言語"))  // true
    fmt.Println(strings.Split(s, " "))        // ["Go言語" "プログラミング"]
}

文字の扱い

package main
import "fmt"
func main() {
    var b byte = 'G'
    var r rune = '語'
    fmt.Printf("%T, %T\n", b, r)  // uint8, int32
}

型変換

package main
import "fmt"
func main() {
    var f float64 = 3.14
    i := int(f)
    fmt.Printf("%T -> %T\n", f, i)  // float64 -> int
}

フォーマット出力

package main
import "fmt"
func main() {
    fmt.Printf("10進:%d, 2進:%b, 16進:%x\n", 255, 255, 255)
    fmt.Printf("小数:%.2f\n", 3.14159265)  // 3.14
}

タグ: Go言語 データ型 プログラミング基礎 タイピング

6月29日 17:35 投稿