
Go言語でよく使用される型について知りたいです。
Go言語は静的型付け言語で、Go言語でプログラムを書く場合は「型」を常に意識する必要があります。
この記事では、Go言語でよく使用される型の基本的に知っておきたいことをお伝えします。
当ブログの変数宣言に関する記事を読むことで、より理解が深まることでしょう。
【Go言語の型】int型(整数型)
int型は整数値を代入することができる型です。
int型の種類と最小値と最大値
int型は通常使用で int
を多く使用していますが、実はint型だけでもたくさんの型の種類があります。
int型の種類と扱える整数値を表でまとめてみました。
型 | ビット数 | 最小値 | 最大値 |
---|---|---|---|
uint8 | 8bit | 0 | 255 |
uint16 | 16bit | 0 | 65535 |
uint32 | 32bit | 0 | 4294967295 |
uint64 | 64bit | 0 | 18446744073709551615 |
int8 | 8bit | -128 | 127 |
int16 | 16bit | -32768 | 32767 |
int32 | 32bit | -2147483648 | 2147483647 |
int64 | 64bit | -9223372036854775808 | 9223372036854775807 |
上記のようにint型には種類があり、それぞれ扱えるデータ量に違いがあります。

覚える必要はありません。とりあえず「こういうのがあるんだ…」くらいの認識でいいですよ。
int型で変数宣言してみよう
int型で変数宣言する時は int
のみで型を宣言するのが一般的です。
int型はパソコン環境に依存し、あなたのパソコンのOS(オペレーションシステム)が64ビットであればint64と同じ整数値を扱うことができます。
もちろん int64
のように型を宣言することもできます。
// int型で変数宣言
package main
import "fmt"
func main(){
// intで変数宣言
var i int = 1
// 値を出力
fmt.Println(i)
// 型を確認
fmt.Printf("%T\n", i)
// int64で変数宣言
var i64 int64 = 10
fmt.Println(i64)
// 型を確認
fmt.Printf("%T\n", i64)
}
// 出力結果
$ go run main.go
1
int
10
int64
int型の演算で注意したい点
i
はint型で i64
はint64型でどちらもint型です。
では、実際に計算してみましょう。
// int型で変数宣言
package main
import "fmt"
func main(){
// intで変数宣言
var i int = 1
fmt.Println(i)
fmt.Printf("%T\n", i)
// int64で変数宣言
var i64 int64 = 10
fmt.Println(i64)
fmt.Printf("%T\n", i64)
// 足し算してみる
fmt.Println(i + i64)
}
// 出力結果
$ go run main.go
# command-line-arguments
./main.go:20:19: invalid operation: i + i64 (mismatched types int and int64)
「i + i64は型がミスマッチです」というエラーが出力されます。
同じint型ですが、別の型と識別されて演算できません。
では、このミスマッチするエラーを解消していきましょう。
型変換してエラーを回避しよう
演算結果を出力するときに、どちらかの型を合わせて演算します。
今回は i64
をint型に型変換してみましょう。
// int型で変数宣言
package main
import "fmt"
func main(){
// intで変数宣言
var i int = 1
fmt.Println(i)
fmt.Printf("%T\n", i)
// int64で変数宣言
var i64 int64 = 10
fmt.Println(i64)
fmt.Printf("%T\n", i64)
// 型変換して足し算してみる
fmt.Println(i + int(i64)) // int(i64)で型変換
// 型を調べる
fmt.Printf("%T\n", i64) // 確認のために型を調べる
}
// 出力結果
$ go run main.go
1
int
10
int64
11 // 演算結果が出力される
int64 // 変数自体の型は変わらない
無事にエラーを出さずに足し算することができました。
ただし、今回は出力結果を表示する時に型変換を行っているだけで、実際の i64
の型はint64型のままだということを確認しておきましょう。
型変換の詳細は、別の記事でお伝えしていますので参考にしてください。
【Go言語の型】float型(浮動小数点型)
float型は小数(実数)の値を代入することができる型です。
float型の種類
float型は通常使用で float64
を使用することが多いですが、その他にも float32
があります。
float型で変数宣言してみよう
float型で変数を宣言してみます。
// float型(浮動小数点型)で変数宣言
package main
import "fmt"
func main() {
var fl64 float64 = 1.2
fmt.Println(fl64)
// 暗黙型の変数宣言ではfloat64になる
fl := 3.4
fmt.Println(fl)
fmt.Println(fl64 + fl)
// どちらも型が一緒なので計算できる
fmt.Printf("%T %T\n", fl64, fl)
// float32で変数宣言
var fl32 float32 = 5.6
fmt.Printf("%T\n", fl32)
// 型変換
// fl32をfloat64に型変換
fmt.Printf("%T\n", float64(fl32))
}
// 出力結果
$ go run main.go
1.2
3.4
4.6
float64 float64
float32
float64
float型での注意点
float型で注意したい点は2点あります。

float型では float64
を通常使用すると覚えておきましょう。
【Go言語の型】string型(文字列型)
string型は文字列を表現することができる型です。
string型で変数宣言してみよう
string型で変数宣言してみます。
// string型(文字列型)で変数宣言
package main
import "fmt"
func main() {
// string型はダブルクォートで文字列を囲んで代入
var s string = "Hello World"
fmt.Println(s)
// 型を調べる
fmt.Printf("%T\n", s)
// 数値を文字列に変換(数字として扱う)
// ダブルクォートで数字を囲む
var si string = "100"
fmt.Println(si)
fmt.Printf("%T\n", si)
}
// 出力結果
$ go run main.go
Hello World
string
100
string
string型の変数宣言は、 “ “ ダブルクォートで文字列を囲みます。
数字を文字列として値を代入したい時もダブルクォートで数字を囲みましょう。
string型の正体は?byte型の配列です

string型は、ちょっとだけややこしいんです…
string型はbyte型の配列で、文字列を1文字づつ取り出すことができます。
// string型(文字列型)で変数宣言
package main
import "fmt"
func main() {
// string型はダブルクォートで文字列を囲んで代入
var s string = "Hello World"
fmt.Println(s)
// 型を調べる
fmt.Printf("%T\n", s)
// 数値を文字列に変換(数字として扱う)
// ダブルクォートで数字を囲む
var si string = "100"
fmt.Println(si)
fmt.Printf("%T\n", si)
// "Hello World"の1文字目を取り出す
// s[0]は1文字目。ちなみに2文字目はs[1]
fmt.Println(s[0])
}
// 出力結果
$ go run main.go
Hello Golang
string
100
string
72 // 1文字目を取り出した結果

あれっ!”H”じゃなくて72となってますね。
これがbyte型の正体です。
文字の”H”はアスキーコードで72となり、アスキーコードのままではわかりづらいので文字として表示してみましょう。
ここでも型変換を使用します。
// string型(文字列型)で変数宣言
package main
import "fmt"
func main() {
// string型はダブルクォートで文字列を囲んで代入
var s string = "Hello World"
fmt.Println(s)
// 型を調べる
fmt.Printf("%T\n", s)
// 数値を文字列に変換(数字として扱う)
// ダブルクォートで数字を囲む
var si string = "100"
fmt.Println(si)
fmt.Printf("%T\n", si)
// "Hello World"の1文字目を取り出す
// s[0]は1文字目。ちなみに2文字目はs[1]
fmt.Println(s[0])
// アスキーコードを文字に変換
fmt.Println(string(s[0]))
}
// 出力結果
$ go run main.go
Hello Golang
string
100
string
72 // 1文字目を取り出した結果
H // アスキーコードを文字に変換
【Go言語の型】byte型(参考までに)
string型はbyte型の配列とお伝えしてきました。
もちろんbyte型として変数宣言することができます。
// byte型 配列を表現できる型
package main
import "fmt"
func main() {
b := []byte{72, 73}
fmt.Println(b)
// byte型を文字列に変換
fmt.Println(string(b))
// 文字列をbyte型配列で表示する
c := []byte("HI")
fmt.Println(c)
// 文字列で表示する
fmt.Println(string(c))
}
// 出力結果
$ go run main.go
[72 73]
HI // byte型を文字列に変換
[72 73]
HI // byte型を文字列に変換
byte型の変数宣言で注意しなければいけないのが、アスキーコードの配列の場合は {}
になり、文字の配列の場合は ()
になります。
【参考】アスキーコード
参考としてアスキーコードについて触れておきましょう。
ASCIIとは、アルファベットや数字、記号などを収録した文字コードの一つ。最も基本的な文字コードとして世界的に普及しており、他の多くの文字コードがASCIIの拡張になるよう実装されている。文字を7ビットの値(0~127)で表し、128文字が収録されている。
IT用語辞典 e-Words

表で見てみましょう。
アスキーコードの”H”10進数のところ見てみると72となっているのが確認できます。
【Go言語の型】bool型(真偽値)
bool型は true
(真) false
(偽)を表現できる型です。
条件分岐(if文)で多く使用される型となります。
// bool型で変数宣言
package main
import "fmt"
func main() {
// bool型で変数宣言
var t bool = true
var f bool = false
// 値を出力
fmt.Println(t, f)
// 型を調べる
fmt.Printf("%T\n", t)
fmt.Printf("%T\n", f)
}
// 出力結果
$ go run main.go
true false
bool
bool
【まとめ】Go言語の型の基本を理解しよう
今回、Go言語でよく使用される型についてお伝えしてきました。
Go言語は「型」に厳しいプログラミング言語です。
きちんと使いこなしていき、バグの少ないプログラムを目指していきましょう。
comment