A Tour of Go をやる! – その10 「Variables with initializers」砂でも詰めるか… 【Go言語/A Tour of Go】

記事ヘッダー_Variables_with_initializers IT

「A Tour of Go をやる!」シリーズの第10回目。 二桁回到達… !

引き続いての変数回。今回は初期化な内容となっているようです。

- PR -

今回進めるページ「Variables with initializers」

タイトルがなげぇ…、はどうでもよくて「A Tour of Go」のページはこちら。

A Tour of Go

タイトルの「Variables with initializers」とは?

初期化子を使った変数…かな?
宣言された変数に任意の値(初期化子?)を入れる、ってことですね。

変数の初期化に関する言語仕様を確認する

前回も引用した「Variable declarations」。
初期化の部分を確認します。

If a list of expressions is given, the variables are initialized with the expressions following the rules for assignments. Otherwise, each variable is initialized to its zero value.

式のリストが指定されている場合、変数は割り当ての規則に従って式で初期化されます。それ以外の場合、各変数はゼロ値に初期化されます。(by Google Translated.)

The Go Programming Language Specification - The Go Programming Language
Go
VarDecl     = "var" ( VarSpec | "(" { VarSpec ";" } ")" ) .
VarSpec     = IdentifierList ( Type [ "=" ExpressionList ] | "=" ExpressionList ) .

var i int
var U, V, W float64
var k = 0
var x, y float32 = -1, -2
var (
	i       int
	u, v, s = 2.0, 3.0, "bar"
)
var re, im = complexSqrt(-1)
var _, found = entries[name]  // map lookup; only interested in "found"
Expand

基本となる書き方

変数を初期化するとき、よく使う書き方です。

Go
// 変数初期化の基本的な書き方
var [変数名] [型名] = [値(初期化子)]
// 型名を省略すると [値] に沿った型になる
var [変数名] = [値(初期化子)]

// e.g.
// int型 の変数 i を宣言し 7 で初期化
var i int = 7
// int型 の変数 x と y を宣言し 3 と 6 で初期化
var x, y int = 3, 6
Expand

型を省略すると…

初期化子として指定した [値] の種類によって型が決定する。
ちなみにこういった 数値や文字列そのものの値 は リテラル値 と呼ばれます。

Go
package main

import "fmt"

func main() {

  // 型を省略してみる
  var suji = 3
  var moji = "文字"
  var sujiormoji = "6"

  // 変数の型を確認する
  fmt.Printf("suji=%T\nmoji=%T\nsujiormoji=%T\n", suji, moji, sujiormoji )

}
Expand

Go Playground

数値はそのまま、文字はダブルクォートで括る。
例えば、10行目のように数値をダブルクォートで括ると文字として扱われます。

サンプルプログラムを見てみる。

「A Tour of Go」のサンプルプログラムを見てみます。今回のお題に関係する箇所にはコメント打ってます。

Go
package main

import "fmt"

// パッケージ変数 i と j を 1 と 2 で初期化(i=1, j=2)
var i, j int = 1, 2

func main() {

  // ローカル変数 c と python と java を true と false と "no!" で初期化
  // (c=true, python=false, java="no!")
  var c, python, java = true, false, "no!"
  fmt.Println(i, j, c, python, java)

}
Expand

Go Playground

処理内容は変数をそれぞれ宣言し初期化。最終的に変数の内容を出力しています。
コレと言った複雑な処理はしていない特に中身のない(?)プログラムです。_(:3」∠)_

さいごに

今回は変数を初期化する方法を覚えました。
「A Tour of Go」では暫く変数な内容が続くようです。

というわけで、また次回~٩( ‘ω’ )و

コメント

タイトルとURLをコピーしました