数値型と演算子 / シフト演算子【夏休みにGo vol.5】

こんにちは、しーたです。
今日はデータ型の種類と演算子について学びます。といっても他の言語とほとんど同じなので例と結果だけで、説明は省きます。

 

 

①数値型と演算子

uint, int, float, complexなど色んなデータ型があります。
演算子もおなじみの+,-,*,/,%、インクリメントも他の言語と同じですね。詳しくはドキュメントの数値型の仕様を見ましょう。→ https://golang.org/ref/spec#Numeric_types

"fmt.Printf"は、%Tでデータ型、%vで値が見れます。

package main

import "fmt"

func main() {
    var (
        u8  uint8     = 255
        i8  int8      = 127
        f32 float32   = 0.2
        c64 complex64 = -5 + 12i
    )

    fmt.Println(u8, i8, f32, c64)
    fmt.Printf("type=%T, value=%v", u8, u8)

    fmt.Println("5+2 = "5+2)
    fmt.Println("5-2 = "5-2)
    fmt.Println("5*2 = "5*2)
    fmt.Println("5/2 = "5/2)
    fmt.Println("5%2 = "5%2)

    x := 1
    fmt.Println("x = ", x)
    x += 2
    fmt.Println("x = ", x)
    x++
    fmt.Println("x = ", x)
}


f:id:theta04:20200801215600p:plain

複素数が簡単に使えるのは嬉しいですね。Cでは使えないのに...と思っていたら使えるようになってるみたいですね。知りませんでした。

 

②シフト演算子 "<<"

シフト演算子はビット演算子の一つです。私は初めて見たので少し書きます。

"<<1"と書くことで、「ビットを左に1つずらす」ことができます。
例えば1という数字は4bitで表すと"0001"です。これが"0010"(=2)になります。(ずらして空いた場所(右端のbit)には0が格納されます)

同様に"1<<2"なら"0001"→"0100"(=4)に、"3<<2"なら"0011"→"1100"(=12)になります。

func main() {
    fmt.Println(1 << 0//0001 = 1
    fmt.Println(1 << 1//0010 = 2
    fmt.Println(1 << 2//0100 = 4
    fmt.Println(1 << 3//1000 = 8
}

 

f:id:theta04:20200801220939p:plain

 


それでは!