変数の宣言と初期化

変数を使うには宣言をする必要がある。変数の宣言は var 変数名 型 という形で行う。

var a int

宣言と同時に初期化もできる。この場合には型を省略できる。

var a = 10

初期化しないとゼロ値に初期化される。ゼロ値とは、数値型では 0、文字列型では空文字列、bool型では false のこと。

package main

import "fmt"

func main() {
    var a int
    var b string
    var c bool

    fmt.Println(a)
    fmt.Println(b)
    fmt.Println(c)
}
^o^ > go run var3.go
0

false

コマンドライン引数

コマンドライン引数は C のように main 関数の引数で受け取るのではなく、os パッケージの os.Args 関数を使う。

package main

import (
    "fmt"
    "os"
)

func main() {
    fmt.Println(os.Args)
}
^o^ > go build args.go

^o^ > args foo  bar baz
[args foo bar baz]

os.Args の返り値は文字列の配列。最初の要素は実行ファイル名、これは C と同じだな。

import

使用するライブラリ(パッケージ)の読み込みは import 文で行う。

import "fmt"

読み込むパッケージが複数の場合、import 文を並べて書いてもいいけど、下のようにカッコで囲んで一つにしてもいい。

import (
    "fmt"
    "os"
)

こっちのほうが、読みやすいな。

はてなダイアリーからはてなブログへ

はてなダイアリーに置いてある以前の古い記事をはてなブログに移行した。特に理由があったわけではないんだけど、なんとなく。はてなブログができてずいぶん経つし、ダイアリーはいつまであるかなー、と思ったからかな。
ともかく、はてなブログへは次のリンクからアクセスできます。

 cf. Haskellはスケるよ

文字コード

Go のソースコードは UTF-8 で書くと決まっている。UTF-8 で書いてあれば、日本語も問題なく使える。たとえ Windows でも。

package main

import "fmt"

func main() {
    fmt.Println("こんにちは!")
}
^o^ > go run hello_ja_utf8.go
こんにちは!

UTF-8 以外の文字コード、例えば Shift JIS で書くと次のようにエラーになる。

^o^ > go run hello_ja_sjis.go
# command-line-arguments
.\hello_ja_sjis.go:6: invalid UTF-8 encoding

Hello, world!

気が付けば今月も20日を過ぎている。まずいな。
まあ、いい。日にちが開いてしまってけど、ちょっとずつ Go をやっていこう。

今日は定番の Hello, world プログラムを作った。

package main

import "fmt"

func main() {
    fmt.Println("Hello, world!")
}

Go のプログラムはパッケージから構成される。package 文で宣言する。ここでは main という名前でパッケージを作っている。
Go のプログラムは main パッケージの main 関数がエントリポイントになる。だからプログラムのパッケージ名は main で、main という名前の関数がなければいけない。
関数の定義は func 関数名 で行う。上の例では main 関数だけがある。
import 文は、ライブラリの読み込み。ライブラリ(パッケージ)名をクォートでくくって指定する。ここでは出力のために fmt パッケージを読み込んでいる。
そして、fmt.Println 関数が標準出力への出力。引数の文字列に改行をつけて出力する。

じゃあ、実行してみよう。

^o^ > go run hello.go
Hello, world!

今日はここまで。