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

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

5
go.modのGoモジュールの依存関係をリポジトリの最新のコミットにポイントする方法は?
v1.11 Go以降、モジュールのサポートが追加されました。コマンド go mod init <package name> go build パッケージの依存関係について見つかったすべてのバージョンを含むファイルを生成go.modしgo.sumます。 モジュールにリリースがない場合は、そのモジュールの最新のコミットが使用されます。モジュールにリリースがある場合は、最新のものが依存関係として選択されます。 ただし、公開されたリリースにはまだ含まれていないが、そのリリース以降に行われたコミットからの機能が必要になる場合があります。go.modモジュールのリリースではなく、モジュールのリポジトリ内の特定のコミットを指すように設定するにはどうすればよいですか? go.modで手作業でできるようです module /my/module require ( ... github.com/someone/some_module v0.0.0-20181121201909-af044c0995fe ... ) v0.0.0最後に公開されたリリースタグに対応していない場所は20181121201909、コミットタイムスタンプでありaf044c0995fe、コミットハッシュになりますか?そのような情報を手で見つけて入力する必要がありますか、それとももっと良い方法がありますか?
110 git  go  module 

10
Goが(Javaと比べて)なぜ遅いのですか?
2010年のコンピューター言語ベンチマークゲームからわかるように、 Goは平均してCの 10倍遅い GoはJavaより3倍遅い!? Goコンパイラーが実行用のネイティブコードを生成することを念頭に置いて、これはどのようになりますか? Goの未熟なコンパイラ?または、Go言語に固有の問題がありますか? 編集: ほとんどの回答はGo言語の本質的な遅いことを否定し、問題は未熟なコンパイラにあると主張しています。 したがって、フィボナッチ数を計算するためにいくつかの独自のテストを行いました。反復アルゴリズムはsame、C(O3オプションを使用)と同じ速度でGo(freebsd、6g)で実行されます。鈍い再帰的なものは、Go 2 timesでCよりも遅く実行されます(-O3オプションを使用、-O0を使用-同じ)。しかし、ベンチマークゲームのように10倍の減少を見たことはありません。

12
go言語でUUIDを生成する方法はありますか
次のようなコードがあります。 u := make([]byte, 16) _, err := rand.Read(u) if err != nil { return } u[8] = (u[8] | 0x80) & 0xBF // what does this do? u[6] = (u[6] | 0x40) & 0x4F // what does this do? return hex.EncodeToString(u) 長さ32の文字列を返しますが、有効なUUIDではないと思います。それが本当のUUIDである場合は、なぜそれがUUIDで、何の値を変更するコードの目的であるu[8]とu[6]。 UUIDを生成するより良い方法はありますか?
109 go  uuid 

13
go getを使用してパッケージの特定のバージョンをインポートするにはどうすればよいですか?
次のNodeように、特定のバージョンのベンダーlibをプロジェクトフォルダー(node_modules)にインストールするために使用した環境から、npmそのバージョンのlibをpackage.jsonコンソールから、またはコンソールから直接インストールするように指示します。 $ npm install express@4.0.0 次に、私は自分のプロジェクトにそのパッケージのそのバージョンをインポートするために使用しました: var express = require('express'); 今、同じことをで行いたいと思いますgo。どうやってやるの?パッケージの特定のバージョンをインストールすることは可能ですか?その場合、一元化されたを使用して、$GOPATHあるバージョンを別のバージョンではなくどのようにインポートできますか? 私はこのようなことをします: $ go get github.com/wilk/uuid@0.0.1 $ go get github.com/wilk/uuid@0.0.2 しかし、どうすればインポート中に変更を加えることができますか?

11
Goエラー処理テクニック[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 12か月前に閉鎖。 この質問を改善する Goを始めたばかりです。私のコードにはこれがたくさんあり始めています: if err != nil { //handle err } またはこれ if err := rows.Scan(&some_column); err != nil { //handle err } Goでエラーをチェックして処理するための優れたイディオム/戦略/ベストプラクティスはありますか? 明確にするために編集します。私は、Goチームがより良いものを思いつくのではない、と言っているわけではありません。私はそれを正しく行っているのか、それともコミュニティが考案したいくつかのテクニックを見逃していないのかと尋ねています。皆さんありがとう。
108 go 

3
sync.WaitGroupの例は正しいですか?
この使用例はsync.WaitGroup正しいですか?期待どおりの結果が得られますが、wg.Add(4)との位置についてはわかりませんwg.Done()。で4つのゴルーチンを一度に追加することは意味がありwg.Add()ますか? http://play.golang.org/p/ecvYHiie0P package main import ( "fmt" "sync" "time" ) func dosomething(millisecs time.Duration, wg *sync.WaitGroup) { duration := millisecs * time.Millisecond time.Sleep(duration) fmt.Println("Function in background, duration:", duration) wg.Done() } func main() { var wg sync.WaitGroup wg.Add(4) go dosomething(200, &wg) go dosomething(400, &wg) go dosomething(150, &wg) go dosomething(600, &wg) wg.Wait() fmt.Println("Done") …
108 go  goroutine 


11
ログをファイルに書き込む方法
Goでログファイルに書き込もうとしています。 私はいくつかのアプローチを試みましたが、すべて失敗しました。これは私が試したものです: func TestLogging(t *testing.T) { if !FileExists("logfile") { CreateFile("logfile") } f, err := os.Open("logfile") if err != nil { t.Fatalf("error: %v", err) } // attempt #1 log.SetOutput(io.MultiWriter(os.Stderr, f)) log.Println("hello, logfile") // attempt #2 log.SetOutput(io.Writer(f)) log.Println("hello, logfile") // attempt #3 log.SetOutput(f) log.Println("hello, logfile") } func FileExists(name string) bool { if …
108 go  logging 

5
時間を使わずにすべてのゴルーチンが完了するのを待つ方法スリープ?
このコードは、同じフォルダー内のすべてのxmlファイルを選択します。呼び出された実行可能ファイルがコールバックメソッドの各結果に非同期で処理を適用するためです(以下の例では、ファイルの名前だけが出力されます)。 メインメソッドが終了しないようにスリープメソッドを使用しないようにするにはどうすればよいですか?チャンネルに頭を巻き付けるのに問題があります(結果を同期するにはそれが必要だと思います)。 package main import ( "fmt" "io/ioutil" "path" "path/filepath" "os" "runtime" "time" ) func eachFile(extension string, callback func(file string)) { exeDir := filepath.Dir(os.Args[0]) files, _ := ioutil.ReadDir(exeDir) for _, f := range files { fileName := f.Name() if extension == path.Ext(fileName) { go callback(fileName) } } } func main() …

2
値レシーバーとポインターレシーバー
常にポインターレシーバーを使用するのではなく、値レシーバーを使用したい場合は、私には非常に不明確です。 ドキュメントから要約するには: type T struct { a int } func (tv T) Mv(a int) int { return 0 } // value receiver func (tp *T) Mp(f float32) float32 { return 1 } // pointer receiver ドキュメントは、「そのような基本的なタイプ、スライス、および小さな構造体などの種類については、値の受信機が非常に安くなっメソッドのセマンティクスは、ポインタを必要としない限り、値の受信機は、効率的かつ明確である。」また言います 最初のポイントは、それが「非常に安い」と述べていますが、問題は、ポインターレシーバーよりも安いということです。そこで、小さなベンチマーク(コードの要旨)を作成しました。これは、文字列フィールドが1つしかない構造体の場合でも、ポインターレシーバーの方が高速であることを示しています。これらは結果です: // Struct one empty string property BenchmarkChangePointerReceiver 2000000000 0.36 ns/op BenchmarkChangeItValueReceiver 500000000 3.62 …
107 function  pointers  go 

3
Goの構造体のフィールドを反復処理する
基本的に、aのフィールドの値を反復処理する(私が知っている)唯一の方法structは次のとおりです。 type Example struct { a_number uint32 a_string string } //... r := &Example{(2 << 31) - 1, "...."}: for _, d:= range []interface{}{ r.a_number, r.a_string, } { //do something with the d } を達成[]interface{}{ r.a_number, r.a_string, }するためのより優れた、より用途の広い方法があるかどうか疑問に思っていたので、各パラメーターを個別にリストする必要はありませんか、あるいは、構造体をループするより良い方法はありますか? reflectパッケージを調べてみましたが、取り出しreflect.ValueOf(*r).Field(0)た後どうすればよいかわからないため、壁にぶち当たりました。 ありがとう!
107 go  go-reflect 

4
Golangで長いコード行を改行する方法は?
Pythonから来たので、80列を超えるコード行を表示するのは慣れていません。だから私がこれに遭遇したとき: err := database.QueryRow("select * from users where user_id=?", id).Scan(&ReadUser.ID, &ReadUser.Name, &ReadUser.First, &ReadUser.Last, &ReadUser.Email) 壊そうとした err := database.QueryRow("select * from users where user_id=?", id) \ .Scan(&ReadUser.ID, &ReadUser.Name, &ReadUser.First, &ReadUser.Last, &ReadUser.Email) しかし、私は得る syntax error: unexpected \ Enterキーを押して改行し、最後にセミコロンを付けてみました。 err := database.QueryRow("select * from users where user_id=?", id) .Scan(&ReadUser.ID, &ReadUser.Name, &ReadUser.First, &ReadUser.Last, &ReadUser.Email); …
107 go  syntax 

4
go言語で別のファイルから関数を呼び出す方法は?
go langの別のファイルから関数を呼び出したいのですが、誰か助けてくれますか? test1.go package main func main() { demo() } test2.go package main import "fmt" func main() { } func demo() { fmt.Println("HI") } 呼び出す方法demoでtest2からtest1?
107 go 

4
Goを使用して大きなファイルを効率的にダウンロードするにはどうすればよいですか?
Goを使用して、ファイルに書き込む前にコンテンツをすべてメモリに保存するのではなく、ファイルに直接保存する大きなファイルをダウンロードする方法はありますか?ファイルは非常に大きいため、ファイルに書き込む前にすべてをメモリに保存すると、すべてのメモリが消費されます。
106 go 

2
リフレクトを使用して、構造体フィールドの値をどのように設定しますか?
reflectパッケージを使用して構造体フィールドを操作するのに大まかな時間がかかります。特に、フィールド値の設定方法を理解していません。 タイプt構造体{fi int; fs string} var rt = t {123、 "jblow"} var i64 int64 = 456 フィールド名iを取得-これは動作するようです var field = reflect.TypeOf(r).Field(i).Name フィールドiの値をa)インターフェイス{}、b)intとして取得-これは機能するようです var iface interface{} = reflect.ValueOf(r).Field(i).Interface() var i int = int(reflect.ValueOf(r).Field(i).Int()) フィールドiの値の設定-1つ試す-パニック reflect.ValueOf(r).Field(i).SetInt( i64 ) panic:エクスポートされていないフィールドを使用して取得した値を使用するreflect.Value・SetInt フィールド名「id」と「name」が好きではなかったので、「Id」と「Name」に名前が変更されました a)この仮定は正しいですか? b)正しい場合、同じファイル/パッケージ内にあるため必要ではないと考えた フィールドiの値を設定-2つ試す(フィールド名を大文字にして)-パニック reflect.ValueOf(r).Field(i).SetInt( 465 ) reflect.ValueOf(r).Field(i).SetInt( i64 ) panic:reflect.Value・アドレス指定不可能な値を使用したSetInt @peterSOによる以下の指示は、徹底的で高品質です 四。これは機能します: …

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