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

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

3
文字列のスライスを1つの文字列に結合する方法は?
package main import ( "fmt" "strings" ) func main() { reg := [...]string {"a","b","c"} fmt.Println(strings.Join(reg,",")) } 私にエラーを与えます: prog.go:10:文字列への引数では、タイプ[] stringとしてreg(タイプ[3]文字列)を使用できません。結合 ループして変数に追加するよりも直接的な方法がありますか?
129 go  slice 

5
(任意の)フィールド名で構造体の配列を単純にソートする最も簡単な方法は何ですか?
私は構造体の配列がある問題を抱えていました、例えば package main import "log" type Planet struct { Name string `json:"name"` Aphelion float64 `json:"aphelion"` // in million km Perihelion float64 `json:"perihelion"` // in million km Axis int64 `json:"Axis"` // in km Radius float64 `json:"radius"` } func main() { var mars = new(Planet) mars.Name = "Mars" mars.Aphelion = 249.2 mars.Perihelion …
129 sorting  go 

6
「testing」パッケージを使用してGoテストでどのように印刷しますか?
Goでテストを実行して、何かを出力するステートメント(つまり、テストのデバッグ用)を実行していますが、何も出力されません。 func TestPrintSomething(t *testing.T) { fmt.Println("Say hi") } このファイルでgo testを実行すると、出力は次のようになります。 ok command-line-arguments 0.004s 私が知る限り、本当に印刷させる唯一の方法は、次のようにt.Error()を介して印刷することです。 func TestPrintSomethingAgain(t *testing.T) { t.Error("Say hi") } これはこれを出力します: Say hi --- FAIL: TestPrintSomethingAgain (0.00 seconds) foo_test.go:35: Say hi FAIL FAIL command-line-arguments 0.003s gom: exit status 1 私はグーグルで検索してマニュアルを調べましたが、何も見つかりませんでした。
129 testing  go 

3
json.Marshal(struct)は「{}」を返します
type TestObject struct { kind string `json:"kind"` id string `json:"id, omitempty"` name string `json:"name"` email string `json:"email"` } func TestCreateSingleItemResponse(t *testing.T) { testObject := new(TestObject) testObject.kind = "TestObject" testObject.id = "f73h5jf8" testObject.name = "Yuri Gagarin" testObject.email = "Yuri.Gagarin@Vostok.com" fmt.Println(testObject) b, err := json.Marshal(testObject) if err != nil { fmt.Println(err) } …
128 json  go  marshalling 

6
不正な証明書でhttpsリクエストを行う方法は?
https://golang.orgプログラムで取得したいとします。現在、golang.org(ssl)には不正な証明書が発行されている*.appspot.comので、これを実行すると、 package main import ( "log" "net/http" ) func main() { _, err := http.Get("https://golang.org/") if err != nil { log.Fatal(err) } } (予想通り) Get https://golang.org/: certificate is valid for *.appspot.com, *.*.appspot.com, appspot.com, not golang.org 今、私はこの証明書を自分で信頼したいと思います(指紋などを検証できる自己発行の証明書を想像してください)。どのようにリクエストを発行し、証明書を検証/信頼できますか? おそらくopensslを使用して証明書をダウンロードし、それをファイルにロードして、tls.Config構造体に入力する必要があります!?
128 ssl  https  go 

4
整数を浮動小数点数に変換します
整数値を変換する方法 float64型ですか? 私は試した float(integer_value) しかし、これは機能しません。そして、これを行うパッケージをGolang.orgで見つけることができません float64整数値から値を取得するにはどうすればよいですか?
127 go 

3
Go言語には関数/メソッドのオーバーロードがありますか?
CライブラリをGoに移植しています。C関数(varargs付き)は次のように定義されます。 curl_easy_setopt(CURL *curl, CURLoption option, ...); そこで、ラッパーC関数を作成しました。 curl_wrapper_easy_setopt_str(CURL *curl, CURLoption option, char* param); curl_wrapper_easy_setopt_long(CURL *curl, CURLoption option, long param); Goで関数を次のように定義すると、 func (e *Easy)SetOption(option Option, param string) { e.code = Code(C.curl_wrapper_easy_setopt_str(e.curl, C.CURLoption(option), C.CString(param))) } func (e *Easy)SetOption(option Option, param long) { e.code = Code(C.curl_wrapper_easy_setopt_long(e.curl, C.CURLoption(option), C.long(param))) } Goコンパイラーは文句を言います: *Easy·SetOption redeclared in …
127 go 

1
「取得」インストールで失敗する内部コンパイルコマンドを確認するにはどうすればよいですか?
依存関係のあるパッケージをプルしてインストールしていますが、コンパイルが失敗しますmagic.h。この場合、ファイルが見つかりません。コンパイルコマンドとフラグを確認するにはどうすればよいですか?この-vオプションは役に立ちません。(magic.hをどこから取得するかについてのアイデアは必要ありません。これは単なる例です。) $ go get -u github.com/presbrey/magicmime # github.com/presbrey/magicmime ../../../src/github.com/presbrey/magicmime/magicmime.go:20:11: fatal error: 'magic.h' file not found #include <magic.h> たとえば、インクルードファイルを探していた場所、コンパイルしたソースを正確に見つけるにはどうすればよいですか?(この場合、私が目にするソースファイル$GO_PATH/srcは#includeコメント化されており、/usr/local/include/match.hいずれにせよ存在します。)
126 go 

5
Goにジェネリックがないのはなぜですか?
免責事項:私はGoで1日しか遊んだことがないので、多くの機会を逃した可能性があります。 Goでジェネリック/テンプレート/ whatsInANameが実際にサポートされていない理由を誰かが知っていますか?つまり、ジェネリックがありますが、それはmapコンパイラーによって提供されますが、Goプログラマーは独自の実装を作成できません。Goをできるだけ直交にすることについてのすべての話で、なぜジェネリック型を使用できるが、新しい型を作成できないのですか? 特に関数型プログラミングに関して言えば、ラムダやクロージャさえありますが、静的型システムにジェネリックが欠けている場合、どうすれば一般的な高次関数を作成できfilter(predicate, list)ますか?わかりました。リンクされたリストなどは、interface{}タイプセーフを犠牲にして実行できます。 SO / Googleでクイック検索を行っても洞察は得られなかったため、ジェネリックがあったとしても、後から考えてGoに追加されるようです。私はThompsonがJavaの人よりもはるかに優れていると信じていますが、なぜジェネリックスを除外するのですか?または、それらは計画されていて、まだ実装されていませんか?

6
UNIXタイムスタンプをtime.Timeに解析する方法
Unix タイムスタンプを解析しようとしていますが、範囲外のエラーが発生します。レイアウトは正しいので(Goドキュメントのように)、これは実際には意味がありません。 package main import "fmt" import "time" func main() { tm, err := time.Parse("1136239445", "1405544146") if err != nil{ panic(err) } fmt.Println(tm) } 遊び場
126 go  time  unix-timestamp 

3
Goでスライスをどのようにクリアしますか?
Goでスライスをクリアする適切な方法は何ですか? これが私がgoフォーラムで見つけたものです: // test.go package main import ( "fmt" ) func main() { letters := []string{"a", "b", "c", "d"} fmt.Println(cap(letters)) fmt.Println(len(letters)) // clear the slice letters = letters[:0] fmt.Println(cap(letters)) fmt.Println(len(letters)) } これは正しいです? 明確にするために、バッファをクリアして再利用できるようにします。 例は、bytesパッケージのBuffer.Truncate関数です。 ResetはTruncate(0)を呼び出すだけであることに注意してください。したがって、この場合、70行目は次のように評価されます。b.buf= b.buf [0:0] http://golang.org/src/pkg/bytes/buffer.go // Truncate discards all but the first n unread bytes from the …
125 arrays  go  slice 

5
定数マップを宣言する方法
Goで定数を宣言しようとしていますが、エラーがスローされます。Goで定数を宣言する構文について誰かが私を助けてくれませんか? これは私のコードです: const romanNumeralDict map[int]string = { 1000: "M", 900 : "CM", 500 : "D", 400 : "CD", 100 : "C", 90 : "XC", 50 : "L", 40 : "XL", 10 : "X", 9 : "IX", 5 : "V", 4 : "IV", 1 : "I", } これはエラーです # command-line-arguments ./Roman_Numerals.go:9: …
125 go 

2
Goのインデント:タブまたはスペース?
Goのソースコードのインデントにタブとスペースのどちらを使用するかを設定する標準のGoogle Goコーディング規約のドキュメントがどこかにありますか?そうでない場合、(統計的に)より人気のあるオプションは何ですか? 公式の推薦は何ですか?(存在する場合) より一般的な選択肢は何ですか?


5
Goでfloat64をintに変換する
Goでfloat64をintに変換するにはどうすればよいですか?このstrconvパッケージを使用して、何かを文字列に、または文字列から変換できますが、文字列でないデータ型の間ではできません。fmt.Sprintf何かを文字列に変換してからstrconv必要なデータ型に変換できることはわかっていますが、この余分な変換は少し扱いに​​くいようです-これを行うためのより良い方法はありますか?
124 go 

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