Questions tagged [go]

Go (golang) は、オープンソースの汎用プログラミング言語 です。C 言語からその構文スタイルをゆるく引き継ぎつつも暗黙的な静的型付け、並列化などが、複雑化を避けつつ表現可能になっています。元々 Google の従業員によって、システムプログラミング向けにデザインされた言語ですが、内外から様々な支持をあつめ、そのエコシステムは拡大しています。

Go (golang) は、オープンソースの汎用プログラミング言語です。C 言語からその構文スタイルをゆるく引き継ぎつつも暗黙的な静的型付け、並列化などが、複雑化を避けつつ表現可能になっています。元々 Google の従業員によって、システムプログラミング向けにデザインされたものですが、内外から様々な支持をあつめ、そのエコシステムは拡大しています。

271 questions
21
votes
2 answers

golangのコンパイル時間について

ここ1週間ぐらい前から、go言語でコードを書き始めた初心者です。 質問は、"go run"や"go buiold/install"などのコンパイル時間を短くする方法(作法)を知りたく質問しました。 少し現状を記しておきます。 現在goを使って、プログラムを書いています。 説明が分かりにくくなりますので、ここではmain.goとmypackage.goの2つファイルを作成している状況を仮定します。main.goにはfunc…
nescafe
  • 968
  • 9
  • 27
13
votes
5 answers

Goでコルーチンを再現する方法

GoでLuaのコルーチンやRubyのFiberのような機能を再現したいのですが、良い方法が思いつきません。 以下のようにGoroutineを使うと、似たようなことは可能ですが問題があります。 package main import "fmt" func main(){ ch := make (chan int) go func() { i := 0 for { ch <- i i++ …
h2so5
  • 4,103
  • 2
  • 16
  • 36
8
votes
2 answers

go runでコンパイルされるバイナリはどこかに保存される?

go言語で以下のようにコマンドを実行すると"compile and run Go program"するとUsageに書かれているが、compileされたバイナリはどこかに保存されますか? $ go run hello.go
tomute
  • 1,009
  • 2
  • 15
  • 27
5
votes
3 answers

golangで関数内の自動変数のポインタを返却してしまった場合

これはSIGSEGVを出しませんが、なぜですか? package main import "fmt" func get_pointer() *int{ var x int = 1 fmt.Println(&x) return &x } func main() { xp := get_pointer() *xp = 100 fmt.Println(xp) …
misaki
  • 680
  • 6
  • 14
5
votes
0 answers

go言語のセッション管理について

goでechoを使用してセッションを使ってカードをセットした配列を次のページで使おうと思っております。 echoの公式docに従ってgorilla/sessionsを使っています。 indexの際にはうまくvalueが表示されるのですが、なぜが次に引き継がれません。 ただの文字列であれば引き継がれるのですが、配列は引き継げないのでしょうか? うまいやり方をご教示ください。 一部のプログラムを記載します。 var card [4][13] map[string]int //…
naka
  • 51
  • 1
5
votes
1 answer

golint の "don't use leading k in Go names" とは?

golint に don't use leading k in Go names と怒られました。何故ですか? 動作例: $ cat leading_k.go package main const kFoo = 1 $ golint leading_k.go leading_k.go:3:5: don't use leading k in Go names; var kFoo should be foo 環境: Go 1.9.3
nekketsuuu
  • 23,683
  • 11
  • 50
  • 115
5
votes
2 answers

go getのURL...というトリプルドットはどういう意味ですか?

https://github.com/monochromegane/the_platinum_searcher 上記のthe_platinum_searcherのREADMEを見ると、インストール方法として下記のように記載されていました。 $ go get -u github.com/monochromegane/the_platinum_searcher/... ...を省くとbinにptがインストールされませんでした。この...はどういった役割なのでしょうか?
user3270390
  • 1,088
  • 3
  • 17
  • 34
5
votes
2 answers

golangのアレイと取り扱いについて

golangで使用するアレイの取り扱いについて質問させていただきます。 サンプルコードの後に、詳しい質問をさせていただきます。 package main import "fmt" func main() { x := []int{1,2,3} y := x var z []int for _, v := range x { z = append(z, v) } x[1] = 4 fmt.Println(x) …
nescafe
  • 968
  • 9
  • 27
4
votes
1 answer

goでのデコレーターとストラテジーの実装について

goでストラテジーパターンを用いてある処理のふるまいを変更していました。 すべての具体的なストラテジーに対して、付加的な処理を入れる場合と入れない場合が出てきたので、デコレーターパターンを用いて対応を検討しました。chatgptに質問すると、下記のように、インターフェースを埋め込むことで対応できることがわかりました。この場合、デコレーター構造体側でストラテジーの大元のインターフェースのメソッドをすべて実装しないとデコレーターがストラテジーインターフェースを満たしてくれませんでした。ほとんど委譲し…
4
votes
1 answer

Go言語において複数のメソッドを呼ぶ際のエラーハンドリングでifが乱立してしまう

Go言語を初めて1週間ほどですが、エラーハンドリングの方法について良い方法が思いつかなかった為、質問させて頂きます。 今回の例はjsonデコードですが、json#UnmarshalJSONが問題なのではなく、複数のメソッドを呼び出すメソッドを記述した際には普遍的に起こる問題かと思います。 目的 以下に示すコードのように、独自クラスTaskに対してjson.Unmarshalerインターフェイスを実装しようとしています。 なお、今回の問題とは直接関係ありませんが、m["original"]の内容に…
Sheile
  • 203
  • 1
  • 6
4
votes
1 answer

Golangのテストはバイナリサイズに影響するか?

MyMathというパッケージがあり、 以下のようなテストがsum_test.goに書かれているとします。 package MyMath import ( "testing" ) func TestSum(t *testing.T) { actual := Sum(10, 20) expected := 30 if actual != expected { t.Errorf("got %v\nwant %v", actual,…
nil2
  • 119
  • 5
3
votes
1 answer

Goで、構造体の値返しとポインタ返しの使い分け

Goに限らないトピックかもしれません。 次のような、データベースからデータを読み込む関数(インライン展開されない)を利用する関数があったとします。返されたオブジェクトの生存期間はこの関数内のみとします。 func doSomething() { // getUser()はDBから読み込んで結果を返す関数 user, err :=…
fkm
  • 2,603
  • 1
  • 12
  • 23
3
votes
1 answer

func adder() func(int) int の意味

最後の int が返り値の型なのは分かりますが、その前の func(int) が分かりません。
retake
  • 379
  • 1
  • 7
  • 17
3
votes
1 answer

Go言語で1つのリポジトリで複数のバイナリファイルをビルドする方法

Go言語でコマンドラインのアプリをビルドする際、1つのリポジトリ内で複数バイナリを作成するにはどうすればいいでしょうか? もしくはそのようなビルド設定は非推奨ですか?
hiropon
  • 527
  • 5
  • 13
1
2 3
8 9