ブール変数 ・演算子 / 型変換【夏休みにGo vol.7】
こんにちは、しーたです。
論理回路やゲームでおなじみのブール変数(論理値変数)、忘れてエラー出しがちな型変換について学んでいきます。
①ブール変数・ブール演算子
・%vは値を返すのに対し、%tはtrueかfalseかを返します。※つまり、ブール型以外の変数に%tを使うとエラーが出ます。
・"&&"が論理積、"||"が論理和、"!"が否定です。ほかの言語と同じですね。
func main() {
t, f := true, false
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)
}
↓出力結果
少し前に論理回路の試験があって、01をイヤになるくらい書いたので目に毒です...
②型変換(数値→数値)
数値から数値の場合は簡単です。以下のように変換できます。
func main() {
var x int = 1
xx := float64(x) //int->float64
fmt.Printf("%T %v %f", xx, xx, xx)
}
↓出力結果
③型変換(文字列→数値)
こちらの方がよく使うと思います。
・"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]))
}
↓出力結果
戻り値2つ返せるのは便利でいいですね。Cは1つしかダメだからポインター使ってしたような。
以上です!それでは!