web-technical-blog

web開発に関する技術メモ

Go言語の開発環境等について

■開発環境

Go言語は、「Microsoft Windows」「Mac OS X」「Linux」「FreeBSD」のいずれかの上で動作する。
コンパイル言語であるため、Go言語のプログラム開発にはソースファイルを実行形式ファイルに変換する為の「コンパイラ」が必要
Go言語のコンパイラには「gc」と「GCC」の2種類が用意されている。

①「gc」 → GO言語の標準コンパイラ
②「GCC」 → C言語をはじめ、FortranJavaなど、さまざまな言語をコンパイルできる多言語コンパイラ

■hello.go

package main
import "fmt"

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

コンパイルと実行

cd>go run hello.go
Hello, World!
※「run」として指定したときは、実行形式ファイルは残らない

▼実行形式ファイルを残したいときは、「bulid」を指定して実行

C:\Users\xxxx>cd /d D:\go_sample
D:\go_sample\01>go build hello.go

▼「hello.exe」ファイルが作成される

2015/10/02 17:41 2,490,368 hello.exe
2012/08/16 16:39 74 hello.go

2 個のファイル 2,490,442 バイト
2 個のディレクトリ 90,503,897,088 バイトの空き領域

▼実行形式ファイルを実行

D:\go_sample\01>hello.exe
Hello, World!

■基本的な文法

// ---「hello.go」ファイルが「main」パッケージに属することを意味する
package main
// --- 「fmt」パッケージをインポートすることを宣言する
import "fmt"
// --- 「main」関数の記述
func main(){ // ←波括弧はこの位置にないとエラーする
    // --- 外部パッケージ内の関数を呼び出す際はパッケージ名.関数名とする
    fmt.pritln("Hello, World!")
}

▼文末の「;」は不要

Go言語では一部の例外を除いて「;」(セミコロン)は不要。

▼コメント

// これはコメントです
/*
    これはコメントです
    複数行に渡ったコメントはこの書き方

*/

ソースコードの整形

go fmt ソースファイル名
※タブとか入れてくれるっぽいです

コンパイルと実行

go build -o 実行ファイル名 ソースファイル名
※実行ファイル名をデフォルトにさせたくない場合は以下で作成する
D:\go_sample\01>go build -o test.exe hello.go

▼「test.exe」ファイルが生成される

2015/10/07 15:52 74 hello.go
2015/10/07 15:57 2,490,368 test.exe
※「test.exe」という実行ファイルが作成される

■基本的な型について

Go言語には「クラス」はなく「型」しかない。
「型」は値を保持するだけでなく、メソッドを持たせることができる。

(例)数値型(number.go)

package main
import "fmt"
func main(){
    // --- int型の変数を宣言
    var i int = 12345
    // --- int型からint64型への変換
    var i64 int64 = int64(i)
    // --- 出力
    fmt.Println(i64)
}

▼変数宣言の方法

var b bool
var 変数名 型

▼省略書式を使った変数宣言

変数名 :=初期値
※「var」キーワードを省略するには「:=」を使用し、必ず「初期値」を指定する

// 変数iは「123」で初期されたint型の変数となる
i :=123
// 変数iiはint型、変数sはstring型の変数となる
ii, s := i,"hoge"

▼インポート

import "パッケージのパス"
import "fmt"	// fmtパッケージの利用宣言
import "archive/zip"	// zipパッケージの利用宣言

// 丸かっこを使って一度にインポートも可能
import (
    "fmt"
    "archive/zip"
)

※「fmt」パッケージはGo言語の標準ライブラリで、
Go言語をインストールしたディレクトリ下の「pkg/XXX/fmt.a」ファイル

▼インポートしたパッケージに任意の名前を付ける

import format "fmt"
func main(){
    // fmtパッケージのPrintln関数の呼び出し
    format.Println("test")
}

▼未使用のインポート

package main
import _ "fmt"
func main(){
    //fmt.Println("AAAAAAAAAAAAA")
}

※ブランク識別子「_」を使用すれば、コンパイルエラーは発生しない

▼GOPATH設定
GOPATH は適当に決めて問題ない - Qiita

▼逆引きGolang
http://ashitani.jp/golangtips/index.html

▼参考URL
http://d.hatena.ne.jp/taknb2nch/20140109/1389259972
http://d.hatena.ne.jp/taknb2nch/20140117/1389938135
http://qiita.com/ikawaha/items/fdcf3ccf13f23a860390