2022年1月18日火曜日

Go言語の変数宣言と値の代入

今日も朝からウーバーイーツの稼働をしたのですが、単価が300円(通称スリコ)だったので、早々に切り上げてGoの勉強をしました。

今回はGoの変数宣言について書きます。

まず、一番基本的な変数宣言を書くと以下のようになります。

package main

func main() {
	var i int = 1
	var f64 float64 = 2.5
	var s string = "hello"
	var t bool = true
}

まず、varを書いて、続けて変数名、型を書きます。

intは整数型、float64は浮動小数点数型、stringは文字列型、boolは論理値型です。

ちなみに、このまま実行すると以下のようなエラーが出ます。

./lesson.go:4:6: i declared but not used
./lesson.go:5:6: f64 declared but not used
./lesson.go:6:6: s declared but not used
./lesson.go:7:6: t declared but not used

Compilation finished with exit code 2

これは、宣言した変数がどこにも使われていないというエラーです。

Goはけっこう厳しくて、こういう細かいところまでエラーが出るんですね。

エラーを出さないようにするために、宣言した変数を以下のようにPrintlnで使ってやります。

package main

import "fmt"

func main() {
	var i int = 1
	var f64 float64 = 2.5
	var s string = "hello"
	var t bool = true
	fmt.Println(i, f64, s, t)
}

これで、以下のようにそれぞれの変数に入っている値が出力されます。

1 2.5 hello true

Process finished with the exit code 0

これが、Goの基本的な変数宣言と値を代入する書き方です。

次に、同じ型を複数個宣言する方法です。同じ型の場合は、カンマで区切ってまとめて以下のように宣言して代入することができます。

package main

import "fmt"

func main() {
	var i, c, d int = 1, 3, 5
	fmt.Println(i, c, d)
}

次に、varを省略する方法です。複数のvarを書くのがめんどくさいので、()で括って以下のように書くことでvarを何回も書くのを省略することができます。

package main

import "fmt"

func main() {
	var (
		i, c, d int     = 1, 3, 5
		f64     float64 = 2.5
		s       string  = "hello"
		t       bool    = true
	)
	fmt.Println(i, c, d, f64, s, t)
}

実行すると先ほどと同じ結果が出力されます。

値を代入せずに、以下のように変数だけ宣言すると、デフォルトの値が自動的に代入されますので、これも一応知っておきましょう。

package main

import "fmt"

func main() {
	var (
		i   int
		f64 float64
		s   string
		t   bool
	)
	fmt.Println(i, f64, s, t)
}

これを実行すると、以下のようにデフォルトの値が出力されます。

0 0  false

Process finished with the exit code 0

最後に、varと型を省略する方法です。

以下のように、:=で値を代入することでvarと型を省略することができます。

package main

import "fmt"

func main() {
	i, c, d := 1, 3, 5
	f64 := 2.5
	s := "hello"
	t := true
	fmt.Println(i, c, d, f64, s, t)
}

これを実行すると先ほどと同じように出力されます。

ただし、この省略した書き方は、関数の外では使えないので注意して下さい。関数の外で宣言するなら、最初の基本的な書き方をする必要があります。

ということで、今回はGoの変数宣言と値の代入でした。

0 件のコメント:

コメントを投稿

GAEのGo言語でuser APIが機能しない件

Goを使ってGAEのアプリケーションを作り始めたけど、管理画面を作る段階でいきなり行き詰まった。 user APIがあるんだけど、それがどうしても機能してくれなくて、LoginURLやLogoutURLが返ってこないんです。 検索して出てくるコードのまま書いてるんだけど、全...