Go Wiki: ExperienceReports

このページでは、Goに関する問題についての経験報告を収集しており、これらの問題の解決策設計に役立てることを目的としています。これらの報告は、問題に焦点を当てるべきであり、解決策に焦点を当てたり、提案する必要はありません。解決策を提案するには、提案プロセスを参照してください。

これらの経験報告を利用して、人々がGoの記述でどこで困っているのかを理解し、将来のGoエコシステムへの変更の優先順位付けに役立てたいと考えています。(これらの報告に返信するとは約束していません。Goに関する質問にすぐに回答が必要な場合は、https://go.dokyumento.jp/help/でリソースを参照してください。)

最高の経験報告は、(1)何をしようとしたか、(2)実際に何をしたか、(3)それがなぜ良くなかったのかを、実際の具体的な例、理想的には本番環境での使用例で示しています。これらの報告は、あなたにとって最も重要な問題について書いてください。自身のブログ、Medium、またはGitHub Gist(Markdownには.md拡張子を使用)、または公開されているGoogleドキュメントに投稿し、ここにリンクしてください。(トークビデオやスライドも歓迎しますが、私たちにとって消化するのにあまり便利ではありません。)

このリストに記事を追加するためのWikiの編集権限がない場合は、課題を提出してください

ページ全体はセクションごとにアルファベット順(エラーハンドリングの前にロギングなど)に並べ、セクション内では記事を時系列順に並べてください。各記事の要点を一文でまとめることは役立ちます。

必要に応じて新しいセクションを追加してください。

目次

アプリとゲーム開発

型変換

並行処理

コンテキスト

宣言

依存関係

診断とデバッグ

  • ケビン・バーク、「ベンチマークを実行して結果を出力する方法」、これらの実行と出力にこれほど多くのUnixグルーが必要なければ良いのに。2017年7月

  • ジョン・クラーク、非常に遅い{ヒットテスト失敗、ロギング増加}サイクルを実行することで、断続的な障害(レースではない)を追跡するために、「do { go test -race } while ( $LASTEXITCODE -eq 0 )」を一晩中実行した。何夜も。 https://rr-project.org/のような実行トレース機能は革新的だろう。2018年11月

  • guanw、「cmd/traceとPySnooper」。cmd/traceと(より簡潔な)PythonトレースAPIの比較。2019年5月

ドキュメント

教育と指導

  • カール・キングスフォードとフィリップ・コンポー、「教育のためのGo 2.0」。入門プログラミングコースでのGoの使用経験。

エラー処理

(このセクションはif err != nilの記述についてです。)

エラー値

(このセクションは、Error() stringメソッドを超える追加のエラーセマンティクスについてです。)

ファイルシステム

ジェネリクス

GoMobile

  • ヴィジャイ、「[gomobileでネストされた構造体とスライスがサポートされていない]」

不変性

プロセス間通信

大規模ソフトウェア開発

リテラル

ロギング

その他 / 複数

モジュール

  • ポール・ジョリー - 「既存モジュール内にサブモジュールを作成する」 - マルチモジュールリポジトリ、循環モジュール依存関係、およびさまざまな「状態」間を移動するために必要な手順をカバー。
  • Chiの作者たち - GitHubコメント - Chiの作者たちがGoモジュールサポートの実装を躊躇していた理由についてのコメント(その後追加済み)。要約 — インポート互換性ルールのため。
  • サム・ホワイト -「Goモジュールのサポート」 - 20個のモジュールをアップグレードして学んだこと。要約 — v1を超える大規模モジュールのアップグレードは非常に大変でツールが必要であり、モジュールの失敗モードは非常に複雑で、既存のプロジェクトにモジュールサポートを追加するのは簡単ではない。
  • Stripe GitHubスレッド(リンクされたコメントは下) - Goモジュールのサポートを元に戻す。要約 — StripeはGoモジュールのサポートを元に戻している。なぜなら、v1を超えるモジュールのdepからの明確なアップグレードパスがないため。
  • GOPATHでのbashスクリプトの参照
  • BadgerとDgraphにおけるGoモジュール。要約 - Dgraphはv2のサポートを中止している。なぜなら、Goモジュールを使用しないユーザーがコードを変更せざるを得なくなるため。
  • Golangの依存関係管理モード(GOPATHとGo Modules)に関する調査:現状、問題、課題。 - このレポートの目的は、開発者がGOPATHからGo Modulesへの移行における問題をよりよく理解するのを助けることです。

パフォーマンス

  • ケビン・バーク、「実生活におけるGoベンチマーク」、平均的な開発者にpprofのようなツールの使い方を説明しようとすること、これがもっと簡単だったら良いのに。2016年7月
  • シャノン・ペッカリー、「並行処理は遅いのか?」、Goのテスト、ベンチマーク、プロファイリングツールを使用して、関数の並行実装のパフォーマンスを向上させる方法を示す。2017年4月

移植

  • シャノン・ペカリー、「なぜGOPPなのか」、オブジェクト指向言語からコードを移植しやすくするために、構造体をインターフェースにする「クラス」キーワードを作成しようとする試み。

スライス

構文

時間

ツール

型システム

型付きnil

ベンダー


このコンテンツはGo Wikiの一部です。