タグ付けされた質問 「go」

Goはオープンソースのプログラミング言語です。それは静的に型付けされており、Cから緩やかに派生した構文で、自動メモリ管理、タイプセーフティ、いくつかの動的型付け機能、可変長配列(スライスと呼ばれる)やキー値マップなどの追加の組み込み型、および大規模な標準ライブラリ。

8
ネストされた構造体を初期化します
ネストされた構造体を初期化する方法がわかりません。ここで例を見つけてください:http : //play.golang.org/p/NL6VXdHrjh package main type Configuration struct { Val string Proxy struct { Address string Port string } } func main() { c := &Configuration{ Val: "test", Proxy: { Address: "addr", Port: "80", }, } }
123 go 

3
Goで文字列としてHTTP応答にアクセスする
Webリクエストの応答を解析したいのですが、文字列としてアクセスできません。 func main() { resp, err := http.Get("http://google.hu/") if err != nil { // handle error } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) ioutil.WriteFile("dump", body, 0600) for i:= 0; i < len(body); i++ { fmt.Println( body[i] ) // This logs uint8 and prints numbers } fmt.Println( reflect.TypeOf(body) ) fmt.Println("done") } …
123 networking  go 

1
関数呼び出しで「値として使用」
条件ステートメントで関数の値を評価するときに関数を呼び出す適切な方法は何ですか? package main import "fmt" func main(){ if sumThis(1,2) > sumThis(3,4){ fmt.Println("test") } else { fmt.Println("derp") } } func sumThis(a, b int){ return a+b } これはエラーを返します: ./test4.go:4: sumThis(1, 2) used as value ./test4.go:4: sumThis(3, 4) used as value ./test4.go:11: too many arguments to return これをGoでどのように書きますか?
122 go 

8
ネストされたJSONオブジェクトのマーシャリング解除
ありますいくつかの質問のトピックは、それらのどれもこれ、私は新しいものを作成しています、私の場合をカバーするように見えるん。 次のようなJSONがあります。 {"foo":{ "bar": "1", "baz": "2" }, "more": "text"} ネストされた構造体を作成せずに、ネストされたbarプロパティを非整列化し、それを構造体プロパティに直接割り当てる方法はありますか? 私が今採用しているソリューションは次のとおりです。 type Foo struct { More String `json:"more"` Foo struct { Bar string `json:"bar"` Baz string `json:"baz"` } `json:"foo"` // FooBar string `json:"foo.bar"` } これは簡易バージョンです。冗長性を無視してください。ご覧のとおり、値を解析して割り当てることができるようにしたいと思います // FooBar string `json:"foo.bar"` 地図を使っている人を見たことがありますが、それは私の場合ではありません。fooいくつかの特定の要素を除いて、(大きなオブジェクトである)の内容は基本的に気にしません。 この場合の正しいアプローチは何ですか?私は奇妙なハックを探しているわけではないので、これが道なら、私はそれで大丈夫です。
122 json  go 

6
`copy()`でスライスを複製できないのはなぜですか?
Goでスライスのコピーを作成する必要があります。ドキュメントを読むと、コピー機能が自由に使えます。 copy組み込み関数は、ソーススライスから宛先スライスに要素をコピーします。(特殊なケースとして、文字列からバイトのスライスにバイトをコピーします。)ソースと宛先がオーバーラップする場合があります。Copyは、コピーされた要素の数を返します。これは、len(src)とlen(dst)の最小値になります。 しかし、私がするとき: arr := []int{1, 2, 3} tmp := []int{} copy(tmp, arr) fmt.Println(tmp) fmt.Println(arr) 私tmpは以前と同じように空です(私も使用しようとしましたarr, tmp): [] [1 2 3] 遊び場で確認できます。では、なぜスライスをコピーできないのですか?
121 go  slice 

4
サブディレクトリのGolangテスト
ワークスペースをよりクリーンに保つために、サブディレクトリとしてパッケージのテストと例を含むパッケージをGoで作成したいと考えています。これは可能ですか?可能な場合、どのようにですか? すべてのドキュメントでは常にテストコードを他のコードと同じ場所に配置していますが、これは何らかの方法で、または単に慣例の方が優れていますか?
120 build  go 

4
GolangプロダクションWebアプリケーションの構成
本番環境でGoバックエンドを実行している場合: Go Webアプリケーションを実行するためのスタック/構成は何ですか? サーバーの稼働を維持するために標準ライブラリnet / httpパッケージを使用している人以外は、このトピックについてはあまり知りません。Nginxを使用してリクエストをGoサーバーに渡す-Go with nginx これは少し壊れやすいようです。たとえば、マシンが再起動された場合(追加の構成スクリプトなしで)、サーバーは自動的に再起動しませんでした。 より確かな生産体制はありますか? 余談ですが、次のプロジェクトのためにGo搭載のRESTバックエンドサーバーを計画しており、多額の投資をする前に、Goがプロジェクトをライブで実行できるようにしたいと考えています。
120 web  go  production 


8
Golangのグローバルログへの正しいアプローチ
Goでのアプリケーションロギングのパターンは何ですか?たとえば、ログに記録する必要がある5つのゴルーチンを持っている場合、私は... シングルlog.Loggerを作成して渡しますか? それへのポインタを渡しlog.Loggerますか? 各ゴルーチンまたは関数はロガーを作成する必要がありますか? ロガーをグローバル変数として作成する必要がありますか?
119 logging  go 


3
intをint64に変更する方法は?
私は整数を整数でinteger64に変換しようとしていますが、運がありません。誰でもこれを行う簡単な方法を知っていますか?
118 go 

3
Goのペア/タプルデータ型
Tour of Goの最後の練習をしているときに、(string、int)ペアのキューが必要だと判断しました。とても簡単です。 type job struct { url string depth int } queue := make(chan job) queue <- job{url, depth} しかし、これは私に考えさせました:Goに組み込みのペア/タプルデータ型はありますか?関数から複数の値を返すことがサポートされていますが、生成された複数の値のタプルは、Goの型システムでは一流の市民ではありません。それは事実ですか? 「何を試しましたか」の部分については、明白な構文(PythonプログラマーのPOVから) queue := make(chan (string, int)) うまくいきませんでした。
118 go  tuples 


5
Goのfmt.Println()とprintln()の違い
下記に示されるように、両方fmt.Println()とprintln()ゴーで同じ出力を与えます:Hello world! しかし、それらは互いにどのように違うのですか? スニペット1、fmtパッケージを使用。 package main import ( "fmt" ) func main() { fmt.Println("Hello world!") } fmtパッケージなしのスニペット2 。 package main func main() { println("Hello world!") }
117 go  println 

5
Nチャンネルを聞くには?(動的選択ステートメント)
2つのゴルーチンを実行する無限ループを開始するには、以下のコードを使用できます。 メッセージを受け取った後、それは新しいgoroutineを開始し、永遠に続きます。 c1 := make(chan string) c2 := make(chan string) go DoStuff(c1, 5) go DoStuff(c2, 2) for ; true; { select { case msg1 := <-c1: fmt.Println("received ", msg1) go DoStuff(c1, 1) case msg2 := <-c2: fmt.Println("received ", msg2) go DoStuff(c2, 9) } } 次に、N個のゴルーチンに対して同じ動作をさせたいのですが、その場合、selectステートメントはどのように見えますか? これは私が始めたコードビットですが、selectステートメントのコーディング方法が混乱しています numChans := 2 //I …
116 go 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.