ブール変数 ・演算子 / 型変換【夏休みにGo vol.7】

こんにちは、しーたです。
論理回路やゲームでおなじみのブール変数(論理値変数)、忘れてエラー出しがちな型変換について学んでいきます。

①ブール変数・ブール演算子

%vは値を返すのに対し、%tはtrueかfalseかを返します。※つまり、ブール型以外の変数に%tを使うとエラーが出ます。
"&&"が論理積、"||"が論理和、"!"が否定です。ほかの言語と同じですね。

func main() {
    t, f := truefalse
    fmt.Printf("%T %v %t\n", t, t, t)
    fmt.Printf("%T %v %t\n", f, f, f)

    fmt.Println(true && true//論理積
    fmt.Println(true && false)
    fmt.Println(false && false)

    fmt.Println(true || true//論理和
    fmt.Println(true || false)
    fmt.Println(false || false)

    fmt.Println(!true//否定
    fmt.Println(!false)
}

↓出力結果

画像1

少し前に論理回路の試験があって、01をイヤになるくらい書いたので目に毒です...

②型変換(数値→数値)

数値から数値の場合は簡単です。以下のように変換できます。

func main() {
    var x int = 1
    xx := float64(x) //int->float64
    fmt.Printf("%T %v %f", xx, xx, xx)
}

↓出力結果

画像2


③型変換(文字列→数値)

こちらの方がよく使うと思います。
"strconv.Atoi()"は変換結果とエラーの2つの戻り値を持っています。エラーの有無は今回使わず、"i, err = str~~" としてしまうと変数不使用のエラーが出てしまうため"_"を書いています。この変数は使いません、という意味です。
「数値→文字列」の場合は"strconv.Itoa()"を使います。
"string(h[0])"とするとアスキーコードを文字列に変換することができます。

func main() {
    var s string = "14"
    i, _ := strconv.Atoi(s) //str->int(number)
    fmt.Printf("%T %v\n", i, i)

    h := "Hello, World"
    fmt.Println(string(h[0]))
}

↓出力結果

画像3

戻り値2つ返せるのは便利でいいですね。Cは1つしかダメだからポインター使ってしたような。


以上です!それでは!

 

いいなと思ったら応援しよう!