Go言語の変数の基本の型を紹介していきます。
Go言語の簡単な変数定義を紹介した記事はこちらから。
https://nori-life-log.com/【go言語】簡単な変数定義
数値型
数値型は他の言語とほぼ一緒です。こちらのページに一覧があります。
package main
import "fmt"
func main() {
var (
u8 uint8 = 255
i8 int8 = -127
f32 float32 = 3.0e+2
c64 complex64 = -1 + 6i
)
fmt.Println(u8, i8, f32, c64)
}
実行すると下記のように出力されます。
255 -127 300 (-1+6i)
floatの変数を3.0e+2と宣言しましたが、ちゃんと300と出力されています。
複素数も使うことはあまりないかと思いますが、扱うことができます。
またGo言語は
x++ x--
といった表現でインクリメント・デクリメントすることが可能です。
シフト演算についても
1 << 2
などと書くことができます。
上記は「0001」を2bitシフトするので「0100」つまり4になります。
文字列型
基本的な書き方は他の言語とほとんど変わらないので、特殊な例を示します。
package main
import (
"fmt"
"strings"
)
func main() {
fmt.Println("Hello World"[0])
fmt.Println(string("Hello World"[0]))
var s string = "Hello World"
fmt.Println(strings.Replace(s, "H", "X", 1))
fmt.Println(strings.Contains(s, "World"))
fmt.Println(`Test
Test
Test`)
}
出力は、以下のようになります。
72 H Xello World true Test Test Test
main文の最初の
fmt.Println("Hello World"[0])
は、”Hello World”という文字列を配列とみなし、添え字を利用して最初の文字を出力しようとしています。
しかし、出力は「72」となっており、”H”のアスキーコードが出力されています。
”H”を出力したい場合は、main文2行目のように
fmt.Println(string("Hello World"[0]))
のようにアスキーコード「72」をstring型にキャストしてやる必要があります。
main文の5,6行目は文字列の置換(Replace)や文字の有無の確認(Contains)を使っています。
こちらも他の言語によく似た言語仕様ですね。
main文の最後の行は、`(バッククォート)を使い、文字列内の改行をそのまま出力する書き方です。
`(バッククォート)は、普通のキーボードだとShift+@で入力できます。
あまり使わないのでTipsとして覚えておくとよいでしょう。
配列
まずは普通の使い方
package main
import "fmt"
func main() {
array := []int{1, 2, 3, 4, 5, 6}
fmt.Println(array)
fmt.Println(array[2:4])
fmt.Println(array[:])
array[2] = 100
fmt.Println(array)
array= append(array, 100, 200, 300, 400)
fmt.Println(array)
}
出力結果は下記です。
[1 2 3 4 5 6] [3 4] [1 2 3 4 5 6] [1 2 100 4 5 6] [1 2 100 4 5 6 100 200 300 400]
「:」で配列をスライスできるところはPythonと同じです。
[]で配列の各要素にアクセスでき、「append」というメソッドで配列に要素を追加できます。
続いて、「make」と「cap」についてです。
package main
import "fmt"
func main() {
array := make([]int, 3, 5)
fmt.Printf("len=%d cap=%d value=%v\n", len(array), cap(array), array)
array = append(array, 0, 0)
fmt.Printf("len=%d cap=%d value=%v\n", len(array), cap(array), array)
array = append(array, 1, 2, 3, 4, 5)
fmt.Printf("len=%d cap=%d value=%v\n", len(array), cap(array), array)
}
出力結果は下記のようになります。
len=3 cap=5 value=[0 0 0] len=5 cap=5 value=[0 0 0 0 0] len=10 cap=10 value=[0 0 0 0 0 1 2 3 4 5]
配列をmakeで宣言することで、初期要素数と容量を指定することができます。
以下のarrayは容量5、初期要素数3のint型の配列となります。
array := make([]int, 3, 5)
ただし、容量以上の要素を追加できないかというと、そうではありません。
容量はあくまで、宣言時に確保するメモリのサイズとお考え下さい。
cap(配列)と書くことで、その配列の容量を取得することができます。
まとめ
Go言語の数値型、文字列型、配列の使い方を紹介しました。
他の言語を習得していればすんなり覚えられると思います。
以上!
コメント