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

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

 

 

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

・%vは値を返すのに対し、%tはtrueかfalseかを返します。※つまり、ブール型以外の変数に%tを使うとエラーが出ます。

・"&&"が論理積、"||"が論理和、"!"が否定です。ほかの言語と同じですね。

func main() {
    tf := 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)
}

↓出力結果

f:id:theta04:20200802015342p:plain

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

 

②型変換(数値→数値)

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

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

↓出力結果

f:id:theta04:20200802020251p:plain

 

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

こちらの方がよく使うと思います。

・"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]))
}

↓出力結果

f:id:theta04:20200802020708p:plain

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

以上です!

それでは!