基礎からわかるGo言語 Chapter01..02 その1

基礎からわかるGo言語を買ったものの、あまり読み進めていなかったのでちゃんと読みつつ記事としても書いて行こうかと。
node.js + Go言語って組み合わせで今後何か作れると良いなあと思いつつ。

Hello, World!

とりあえずHello, World!を。

1.go
package main

// comment

/*
comment
comment
comment
*/

// import "fmt"
import (
	"fmt"
)

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

Go言語のソースコードは必ずpackageで始まる。
mainパッケージのmain関数は特別で、エントリポイントの扱いになる。


コメントはC++とかJavaとかその辺と同じ書き方。


importは丸括弧で囲んでパッケージ名を書いて改行すると、行ごとにimportを書かなくて良いみたい。
もちろんimportを書きまくってもおーけー。


あと基本的に行末のセミコロンは必要ない。


それと、importしているが使っていないものや、宣言しているが使っていない変数などがあるとコンパイルエラーになる。

goコマンド関連

$ go fmt 1.go

ソースコードを整形してくれる。記法について気にしなくて良いですね。JavaScriptのfixjsstyleみたいな。

$ go run 1.go

スクリプト言語みたく、そのまま実行してくれる。実行ファイルは生成されない。

$ go build 1.go

実行ファイルが生成される。gccコンパイルしたみたいな感じ。

$ go build -o hello 1.go

とすると、helloという名前で実行ファイルが生成される。


他にもgoコマンドには便利なサブコマンドが沢山!

変数と型

変数の宣言はvarを使う。(ほかの宣言方法もあるけど)

// var 変数名 型名
var flag bool

flag = true


数値型。

var i int = 12345
var i64 int64 = int64(i)


文字列型。

var s string

s = "あ"
s = s + "い"
s += "う"


len関数はバイト数を返す。

s1 := "abcdef"
s2 := "あいう"
fmt.Println("s1:", len(s1))  // s1: 6
fmt.Println("s2:", len(s1))  // s2: 9

内部ではUTF-8で扱っているらしいので、日本語の"あいう"は3バイトずつになり9が返ってくる。


文字数を調べたいときはunicode/utf8パッケージのRuneCountInStringを使う。

package main

import (
	"fmt"
	"unicode/utf8"
)

func main() {
	fmt.Println(utf8.RuneCountInString("あいう"))
}


今日はこの辺まで。まだまだ先は長そう……