ライブラリのインポート / 変数の宣言 / 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 tf bool = truefalse
    fmt.Println(i, f64, s, t, f)
}

↓実行結果

f:id:theta04:20200801140742p:plain
また、↓のようにvarを()でまとめることも可能です。

func main() {
    var (
        i    int     = 0
        f64  float64 = 1.2
        s    string  = "test"
        tf bool    = truefalse
    )

    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)
}


f:id:theta04:20200801142141p:plain

・関数内で宣言すればローカル関数に、関数外で宣言すればグローバル関数になります。

package main

import "fmt"

var (
    i    int     = 0
    f64  float64 = 1.2
    s    string  = "test"
    tf bool    = truefalse
)

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に似ている、っていうのが何となく分かってきました!
それでは!