Go言語の違うところ #2
はじめに
これの続き。
CやPythonをかじったことある人が、『基礎からわかるGo言語』を読んで順番に思ったことを書き連ねていくノート的なやつ
パッケージ
ソースが複数ファイルからなる場合、「パッケージ」という単位でソースを扱う。 同一パッケージなら、別ソースで宣言された変数や関数にアクセスすることができるのが特徴。
そして、外部のパッケージのものを扱いたい場合は import
する。
独自パッケージを作る場合、GOPATHを通してあるディレクトリ以下に置かないと認識されないので注意!!
GitHubとかを用いてちゃんとしたプロジェクトコードレベルで管理したいなら以下のサイト様が参考になりそう。
package main import "fmt" import "my/sample" // $GOPATH/src/my/sample 以下にあるソースを読む import rename "my/sample2" // python の as 的なこともできる
for文
Goのforは (Cのwhile + for + pythonのfor) というイメージ。 紛らわしくないようにwhileキーワードがない。 break, continue どちらも完備。
// 基本パターン for var i int = 0; i < 5;i++ { // () がないのはpythonっぽいよね // もちろん条件式を省略してもOK } // whileっぽいパターン i := 0 for i < 5 { i++ } // 無限ループは条件節を省略する for { // infinity! } // python for パターン arr := [...]string["hoge", "fuga", "piyo"] for element := range arr { // 順番に取り出せる } // enumrate for みたいなこともできる arr := [...]string["hoge", "fuga", "piyo"] for index, element := range arr { // 便利 }
if文
ほぼほぼ同じ。
Cとの違いは条件節の()
がないこと、pythonとの違いは、ブロックをちゃんと{}
で囲み、elif
じゃなくて else if
なところ。
そして共通で違うところは、初期化節があるところ。
if x < y { // ほぼ同じ } else if y < 100 { // 感覚で } else { // 使える } if a := add(3, 5);a < 10 { // 余計な変数宣言が減ってちょっと便利 }
switch文
switch - case - dafault の流れはCと一緒だけど、breakが必要なくなった。
代わりに、下の文まで続けて行いたい場合は fallthrough
キーワードを記述する。
そして、待望の(?)switchの条件節に式がかけるようになった
switch number { case 3: // 3 case 4, case 5: // 4, 5 case 6: // 6 failthrough case 7: // 6, 7 default: // それ以外 } // 条件節に式を用いる switch { case num < 3: // 3未満 default: // 3以上 }