← 記事一覧へ

Go 学習記録(4):基本的な型

Go 基礎学習の第 4 回。文法、実例、学習の過程を記録します。

基本的なデータ型

Go の基本型には bool、string、int、浮動小数点型、byte、rune、uint、int8、int16、int32、int64、uint8、uint16、uint32、uint64、float32、float64 などがあります。

次のように分類できます。

go

1. 数値、浮動小数点数、文字

1.1. 真偽値

true と false

1.2. 数値型

1.2.1. 整数

幅の異なる型により、記憶領域の要件に対応できます。

int8

int16

int32

int64

uint8

uint16

uint32

uint64

int

uint

int と uint の幅は対象アーキテクチャに依存します。通常、32 ビット環境では 32 ビット、64 ビット環境では 64 ビットです。

ほかの整数型を示します。 go

1.2.2. 浮動小数点数

float32

float64

それぞれ 32 ビットと 64 ビットの浮動小数点数を表します。

1.2.3. 複素数

Go は複素数の型として complex64 と complex128 を提供します。

標準ライブラリには、複素数の計算用パッケージもあります。

import "math/cmplx"

1.2.4. byte

Go には char 型がありません。byte は uint8 の別名で、8 ビットの 1 バイトを表します。バイナリやバイト単位の文字列処理に使います。

var b byte = 'A'

1.2.5. rune

rune は int32 の別名で、Unicode のコードポイントを表します。Unicode テキストの処理に使います。

var r rune = '中'

1.3. 文字と文字列

1 バイトで表せる文字には byte を使えます。

文字列には string を使います。

var name string
name = "aorange"

2. 基本型の変換

byte という別名により、uint8 と同じ型のまま、バイトとしての用途を明確にできます。

var a int8 = 12
var b = uint8(a)

var f float32 = 12.3
var g = int(f)

// 字符转换为数字,这种情况可能会出错,有err返回
var isrt = "12"
var i, err = strconv.Atoi(isrt)
if err!= nil {
    fmt.Println("转换失败")
}

//数字转字符串类型,理论上不会出错,没有err返回
var i = 12
var s = strconv.Itoa(i)

3. 書式変換と解析

文字列を float32 や bool に変換します。 ほかの型の値を文字列に変換します。

var s = "12.3"
var f, err = strconv.ParseFloat(s, 32) // 32表示32位浮点数

//ParseInt进行进制转换
parseInt , err := strconv.ParseInt(s: "12", 8, 64)//8表示8进制,64表示64位
//此时输出结果为10进制的10

//有关bool类型的转换
parseBool, err := strconv.ParseBool(s: "true")
//转换失败parseBool结果为零值,即false,err不为空
//true,t,T,y,Y,1,
//false,f,F,n,N,0
//其他结果转换可能失败

//基本类型转字符串
strconv.FmoatBool(b: true)
fmt.Println(b)
//其他的转换可以找源码看看,都差不多,都是用的strconv.FormatXXX

変換に失敗する例を示します。 go

4. 演算子と式

細かい点は必要なときに調べます。よく使う演算子は C++ と似ています。

4.1. 算術演算子

go

4.2. 比較演算子

go

4.3. 論理演算子

go

4.4. 代入演算子

go

4.5. ビット演算子

適切なアルゴリズムではビット演算が性能に役立つ場合があります。ただし意味を保つ必要があり、算術演算より常に速いと決めつけず測定します。

go

go

go

4.6. Go の演算子の優先順位

優先順位を示します。 go

go

基本は使ううちに慣れていきます。型や変換には、言語をまたいだ共通点も多くあります。

この記事の日付について

旧サイトに記載された日付を保持しています。実際に書き始めた時期は、これより早い可能性があります。

同じシリーズ · Go の基礎学習

前の記事Go 学習記録(3):変数と定数 ←次の記事Go 学習記録(5):文字列 →