golang
install
ここ見た方がいいかも https://golang.org/doc/install
# linux
$ wget https://dl.google.com/go/go1.13.linux-amd64.tar.gz // バージョンは随時最新のを↑で確認しろ
$ sudo tar -C /usr/local -xzf go1.13.linux-amd64.tar.gz
# mac
$ brew install go
# if not seted
$ export PATH=$PATH:/usr/local/go/bin # go installしたときに実行ファイルが飛んでくとこにパス通しとけ的なやつですかね? これ普通に$GOPATH/binでいいんじゃねって気がしてきた.
$ export GOPATH=$HOME/go # ワーキングディレクトのパス
※複数バージョンの管理はいろいろあるらしいけど,とりあえず update-alternativesによる複数バージョン管理 みたいな感じにするのが良さげな気がする.
Hello, World
$ go get gopl.io/ch1/helloworld
$ $GOPATH/bin/helloworld
Examples
$ go get github.com/veandco/go-sdl2-examples/examples
cmd
go
$ go run test.go #即時実行
$ go build test.go #コンパイル
$ go fmt test.go #フォーマット整形
godoc
$ godoc fmt #パッケージのドキュメントを見る
$ godoc -http=":3000" #公式と同様のインタフェースでブラウザからドキュメント確認する
go modと開発の始め(進め)方に関して
依存モジュールの管理ツールで なんかよくわからんけど,とりあえず開発のときに↓のようにしておくとうまいことやってくれる? 正直よくわからんマジでよくわからんgo getとどう使ったらいいのかとかよくわからんしわからん.
go mod init で、初期化する
go buildなどのビルドコマンドで、依存モジュールを自動インストールする
go list -m all で、現在の依存モジュールを表示する
go get で、依存モジュールの追加やバージョンアップを行う
go mod tidy で、使われていない依存モジュールを削除する
https://qiita.com/uchiko/items/64fb3020dd64cf211d4e https://qiita.com/propella/items/e49bccc88f3cc2407745
参考
本家: https://golang.org/ チュートリアル的な: http://golang.jp/go_tutorial 本家の日本語約で無駄なコンソールないからこっち見た方がいいや. golang.jp自体は古いから情報には注意. とりあえず日本語の入門記事の一つ: http://gihyo.jp/dev/feature/01/go_4beginners 見ると幸せになれるらしいよ: https://qiita.com/tenntenn/items/0e33a4959250d1a55045 プロジェクトレイアウトの話: https://techdo.mediado.jp/entry/2019/01/18/112503
☆つまづきポイントFAQ(これめっちゃいい感じ): https://future-architect.github.io/articles/20190713/
条件分岐コンパイル
Cとかで #ifdef でやるような条件コンパイルやる方法 参考: https://qiita.com/yamasaki-masahide/items/8e5d59467dcf67d9b0be
SDL2
https://www.libsdl.org/ https://wiki.libsdl.org/ https://godoc.org/github.com/veandco/go-sdl2/sdl#pkg-constants https://github.com/veandco/go-sdl2
install
$ go get -v github.com/veandco/go-sdl2/{sdl,img,mix,ttf}
sample
$ go get github.com/veandco/go-sdl2-examples/examples
struct と interface
なんか構造体のそれっぽいことを書く.
型を確認する
fmt.Printf("%T", v)
または
fmt.Println(reflect.TypeOf(v))
function と method
go言語にはfunctionとmethodとかいう関数の概念があるらしい.
以下の構造体が宣言されていたとする.
type Receiver struct {
int num
}
functionの例
func Function(r Receiver) int {
return r.num
}
methodの例 関数名の前にレシーバ(構造体とか)が入る
func (r Receiver) Method() int {
return r.num
}
使い方の違い
r := Receiver {
num: 10,
}
fmt.Printf("Function:\t%d\n", Function(r))
fmt.Printf("Method:\t%d\n", r.Method())
こんな感じでC++のクラス内のメソッドみたいな感じで使える. これでオブジェクト思考的なところを担保してるっぽい.
バイナリ処理
あとでメモる
参照: binary
imported and not used
https://ksakiyama134.hatenadiary.org/entry/20140309/1394378735