【Go言語】基本の型

ソフトウェア

 

Go言語の変数の基本の型を紹介していきます。

 

Go言語の簡単な変数定義を紹介した記事はこちらから。

https://nori-life-log.com/【go言語】簡単な変数定義

 

 

数値型

 

数値型は他の言語とほぼ一緒です。こちらのページに一覧があります。

The Go Programming Language Specification - The Go Programming Language
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言語の数値型、文字列型、配列の使い方を紹介しました。

他の言語を習得していればすんなり覚えられると思います。

 

以上!

コメント