ライブラリのインポート / 変数の宣言 / constでの宣言【夏休みにGo vol.4】
こんにちは、しーたです。
前回に引き続き、Goの基本を学んでいきます。
①ライブラリのインポート
前回登場したfmtの他に、os/user, timeを使ってユーザー名と現在時刻を表示してみます。os/userというのはosライブラリ内にあるuserライブラリのことです。
パッケージを複数インポートする際は()で囲います。
package main
import (
"fmt"
"os/user"
"time"
)
func main() {
fmt.Println("Hell, world.", time.Now())
fmt.Println(user.Current())
}
※実行結果に私の実名が出てしまったので、今回は見せません。
標準のライブラリについてはこちらで説明が見れるので困ったときは見てみましょう。→https://golang.org/pkg/
②変数宣言
Goでは以下のように変数を宣言します。t,fのように同じ型なら並べて宣言することもできます。
package main
import "fmt"
func main() {
var i int = 0
var f64 float64 = 1.2
var s string = "test"
var t, f bool = true, false
fmt.Println(i, f64, s, t, f)
}
↓実行結果
また、↓のようにvarを()でまとめることも可能です。
func main() {
var (
i int = 0
f64 float64 = 1.2
s string = "test"
t, f bool = true, false
)
fmt.Println(i, f64, s, t, f)
}
他にも↓のように型を省略して宣言することも可能です。
xi := 1
この場合、特に数値は int, float32bit / 64bitなどから型が自動で割り当てられる(?)ので、指定したい場合は型をしっかりと記述するほうが良いです。
※"fmt.printf("%T", 変数名)" で変数の型を見ることができます。
func main() {
f := 1.2
var f32 float32 = 1.2
fmt.Printf("%T, %T", f, f32)
}
・関数内で宣言すればローカル関数に、関数外で宣言すればグローバル関数になります。
package main
import "fmt"
var (
i int = 0
f64 float64 = 1.2
s string = "test"
t, f bool = true, false
)
func main() {
fmt.Println(i, f64, s, t, f)
}
※Goでは同じ変数の宣言を2回するとエラーがでます。他の言語だとエラーにならないことも多いかも? 不慮の事故を防止するための仕様だそうです。
③constでの定数宣言
定数の場合は、↓のように型を指定せずに宣言することもできます。この場合、複数の型に代入することができる不思議な形になります。
const Pi = 3.14
var a float32 = Pi
var b float64 = Pi
定数で宣言した変数に値を代入することはできません。(エラーがでます)
以上です!GoがCに似ている、っていうのが何となく分かってきました!
それでは!