目次へ

4. 型

Go言語で使用できるのは以下の型です。

4.1 ゼロ値

変数を宣言もしくはnew、makeなどで明示的な初期値が与えずに作成するとデフォルト値が割り当てられます。
これをゼロ値といいます。

Boolean false
数値型(Integer) 0
数値型(Float) 0.0
文字列型 ""(空文字)
配列型 配列の要素の型のゼロ値からなる配列
スライス型 nil
ポインタ型 nil
関数型 nil
インターフェース型 nil
マップ型 nil
チャネル型 nil

4.2 Boolean型

  • 真偽値を扱う型です。
  • ゼロ値は false です。
説明
bool true または false

4.3 数値型

  • 数値(整数、浮動小数点数、複素数)を扱う型です。
  • ゼロ値は 整数は 0 、浮動小数点数は 0.0 です。ただし、complex64とcomplex128のみ 0+0i です。
説明
uint8 the set of all unsigned 8-bit integers (0 to 255)
uint16 the set of all unsigned 16-bit integers (0 to 65535)
uint32 the set of all unsigned 32-bit integers (0 to 4294967295)
uint64 the set of all unsigned 64-bit integers (0 to 18446744073709551615)
- -
int8 the set of all signed 8-bit integers (-128 to 127)
int16 the set of all signed 16-bit integers (-32768 to 32767)
int32 the set of all signed 32-bit integers (-2147483648 to 2147483647)
int64 the set of all signed 64-bit integers (-9223372036854775808 to 9223372036854775807)
- -
float32 the set of all IEEE-754 32-bit floating-point numbers
float64 the set of all IEEE-754 64-bit floating-point numbers
- -
complex64 the set of all complex numbers with float32 real and imaginary parts
complex128 the set of all complex numbers with float64 real and imaginary parts
- -
byte alias for uint8
rune alias for int32
  • uint、intはアーキテクチャによって異なりますが、uintが32bitだとしてもuintとuint32は異なる型として扱わなければなりません。
説明
uint either 32 or 64 bits
int same size as uint
uintptr an unsigned integer large enough to store the uninterpreted bits of a pointer value

4.4 文字列型

  • 文字列を扱う型です。
  • ゼロ値は "" です。
string “Hello”

4.5 配列型

  • 特定の型の長さ0個以上の固定長列の型です。
  • 配列の長さを含めて型なので、[3]int[5]int は異なる型として扱われます。
  • ゼロ値は配列の要素に指定した型のゼロ値の配列となります。
[3]string [3]string{"Apple", "Banana", "Caramel"}
[10]int [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
[3][5]int [3][2]int{{11, 12}, {21, 22}, {31, 32}}

4.6 スライス型

  • スライスは特定の型の長さ0個以上の可変長列の型で、ベースとなる配列を指し示す記述子です。
  • ゼロ値は nil です。
[]string{} []string{"Apple", “Banana”, "Caramel"}
[]int{} []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

4.7 構造体型

  • 構造体はフィールドと呼ばれる名前付き要素のシーケンスであり、各フィールドは名前と型を持ちます。
  • フィールド名は明示的 または暗黙的 に指定することができます。
  • 構造体内では、空白でないフィールド名は一意でなければなりません。
  • ゼロ値は nil です。
// An empty struct.
struct {}

// A struct with 6 fields.
struct {
    x, y int
    u float32
    _ float32  // padding
    A *[]int
    F func()
}

4.8 ポインタ型

  • 与えられた型の変数へのポインタです。
  • ゼロ値は nil です。
*string
*[4]int

4.9 関数型

  • 同じパラメータと結果型をもつ関数です。
  • ゼロ値は nil です。
func()
func(x int) int
func(a, _ int, z float32) bool
func(a, b int, z float32) (bool)
func(prefix string, values ...int)
func(a, b int, z float64, opt ...interface{}) (success bool)
func(int, int, float64) (float64, *[]int)
func(n int) func(p *T)

4.10 インターフェース型

  • インターフェースではメソッドセットを指定します。
  • インターフェース型の変数は、インターフェースで指定したメソッドセットを持つ任意のタイプの値を格納できます。
  • ゼロ値は nil です。

例えば、以下のようなインターフェースがあります。

type Locker interface {
    Lock()
    Unlock()
}

このインターフェースを満たすメソッドを定義します。

type T struct{}
func (p T) Lock() { … }
func (p T) Unlock() { … }

これで T は、Lockerインターフェースを実装したとなります。

4.11 マップ型

  • 特定の型をキーに、特定の型を値にした順不同な要素セットです。
  • ゼロ値は nil です。
map[string]int
map[*T]struct{ x, y float64 }
map[string]interface{}

4.12 チャネル型

  • 特定の型の値をやりとりするのに使われる型です。
  • 並行処理(goroutineなど)ではこのチャネル型を通して、処理間のデータ受け渡しを行います。
  • ゼロ値は nil です。
chan T          // 送受信(T型)
chan<- float64  // 送信のみ(float64型)
<-chan int      // 受信のみ(int型)

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp
  • シナジーマーケティング研究開発グループブログ