Golang
AOJやっててハマったので package main import ( "fmt" ) type Element struct { number int } func main() { Elementのsliceの場合() Elementのポインタのsliceの場合() } func Elementのsliceの場合() { elements := []Element{} for i := 0; i < 2; i++ {…
goの勉強がてらに作った サンプル 特徴 treviewコマンドでTrendingに入ってるリポジトリの情報一覧が表示できる 前日以前に一回でも表示されたリポジトリは表示されない コマンド叩いたときにデフォルトで表示する言語を指定できる GitHub GitHub - inabajun…
9/10追記 コピーはされるが、sliceはarrayへのポインタを持っていて、コピーしてもそのポインタは変わらないので参照先にarrayは同じ、と言う話だった レシーバは明示的にポインタを渡さない限り値のコピーが渡されると思っていたがそういうことでもないよう…
これをやる A Tour of Go Goroutines go f(x) で別スレッド関数を実行できる。 Goroutinesは同じアドレス空間で動くので、共有メモリへのアクセス時は同期する必要がある。 package main import ( "fmt" "time" ) type Test struct { value int } func (test…
forkして適当なとこにcloneするとimportのパスが import ( "github.com/inabajunmr/repo/package" ) みたいになってて実行時に$GOPATH見に行っちゃうので修正後の挙動が見れないとかテストがどうとかあって、じゃあgo getして$GOPATH以下のコードを直接いじ…
package main import "fmt" type Test struct { value int } func One(test *Test) { test.value = 1 fmt.Println("one") } func execute() Test { x := Test{0} defer One(&x) // xのポインタをOne関数に渡して、0を1に更新 return x } func main() { x := …
これをやる A Tour of Go 型にメソッドを定義 funcと関数名の間にreceiverを定義することで型にメソッドを定義をできる。 メソッドはreceiverを持った関数のことである。 package main import ( "fmt" ) func (test Test) Double() int { return test.X * te…
これをやる A Tour of Go ポインタ package main import "fmt" func main() { i := 10; p := &i fmt.Println(p) // ポインタ fmt.Println(*p) // 値 *p = 20 // ポインタ経由での値変更 fmt.Println(i) v := 20 i = v fmt.Println(&i) // 代入しても参照先は…
これをやる A Tour of Go そしてメモりたくなったことをメモって行く while whileみたいのはforで表現する。 func main() { value := 0 for true { fmt.Println("hello") value += 1 if value == 5 { break; } } } 無限ループ func main() { for { fmt.Print…
これをやる A Tour of Go そしてメモりたくなったことをメモって行く パッケージについて 慣習として、パッケージ名はimportのパスの最後のエレメントになる math/randならrand https://tour.golang.org/basics/1 Exported name 大文字で始まる名前はエクス…