Help us understand the problem. What is going on with this article?

はじめてのGo言語 2.変数

More than 3 years have passed since last update.

前回の記事はこちら
はじめてのGo言語 1.環境構築

JavaScriptをやってる身からすると、型を定義するというのがなれなくてちょいちょいつっかかるところがあったので知識定着のためにメモ。

変数の宣言

Goの変数はvarで宣言をすることができます。
また変数を宣言する際は一緒に型を指定する必要があります。

以下がその例です。

main.go
var x int = 1

xという変数に対して1という数値を代入しています。
型はint型です。
int型は整数を扱うことができます。

型を定義した後に変数に代入する場合は型に合わせたものを入れる必要があります。
以下のように文字列を入れようとするとエラーが発生します。

main.go
var x int = 1
x = "hoge" //cannot use "hoge" (type string) as type int in assignment

省略した宣言方法

変数は一度に複数宣言することができます。
複数宣言する場合はカンマで区切り最後に型を指定します。

main.go
var x, y, z int = 1, 2, 3

また以下のような宣言も可能です。

main.go
var (
    x int = 1
    y     = 2
    z     = 3
)

varの後にカッコをつけて、中に記述していきます。

最初の変数に型を指定することであとの変数も同じ型を指定することができます。

こちらの方が変数に何が入っているのか見通しがよいのでよさげです。

上記の方法を使うとこんな変則的な宣言もできます。

var (
    x int    = 1
    y        = 2
    z string = "hoge"
)

関数内での変数宣言について

関数内部ではvarを省略することができます。

main.go
func main(){
    var x int = 1
    x++
    fmt.printf(x)
}

上記のコードは以下のように書くこともできます。

関数内ではvarと型の省略をすることが可能です。
:=を使用することで型を推測して自動に型を定義してくれます。

main.go
func main() {
    x := 1
    x++
    fmt.Println(x)
}

定数

varではなくconstをしようすると定数として定義することができます。
定数は再代入することが不可能です。再代入をしようとするとエラーになります。

main.go
const x = 1
x = 2 //cannot assign to x

追記(2015.10.15)

初期化子

変数は初期化子を与えると勝手に型を予測してくれる。

main.go
var x = 1 //int型
var y = 1.234 //float64型
var flag = true //bool型
var hoge = "fuga" //string型

x = false //cannot use false (type bool) as type int in assignment
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away