並び順

ブックマーク数

期間指定

  • から
  • まで

241 - 280 件 / 396件

新着順 人気順

goの検索結果241 - 280 件 / 396件

  • GitHub - opentofu/opentofu: OpenTofu lets you declaratively manage your cloud infrastructure.

    Manifesto About the OpenTofu fork How to install Join our Slack community! Weekly OpenTofu Status Updates OpenTofu is an OSS tool for building, changing, and versioning infrastructure safely and efficiently. OpenTofu can manage existing and popular service providers as well as custom in-house solutions. The key features of OpenTofu are: Infrastructure as Code: Infrastructure is described using a h

      GitHub - opentofu/opentofu: OpenTofu lets you declaratively manage your cloud infrastructure.
    • What We Got Right, What We Got Wrong

      This is my closing talk (video) from the GopherConAU conference in Sydney, given November 10, 2023, the 14th anniversary of Go being launched as an open source project. The text is interspersed with the slides used in the presentation. What We Got Right, What We Got Wrong INTRODUCTION Hello. Let me start by thanking Katie and Chewy for the giving me the honor of presenting the closing talk for the

        What We Got Right, What We Got Wrong
      • Go1.21:slicesパッケージのチートシート | フューチャー技術ブログ

        The Gopher character is based on the Go mascot designed by Renée French. Gopherのイラストはegonelbre/gophersを利用しました。 はじめに本記事はGo1.21連載の記事です。 こんにちは。TIG/EXユニット所属宮永です。 先日、第一回日本遺産検定に晴れて合格し、日本遺産ソムリエになりました。夏の旅行先をまだお決めでない方は、日本遺産公式サイトを参考にして、日本各地の魅力的なスポットを訪れてみてはいかがでしょうか。 日本遺産については公式サイトの説明が非常にわかりやすいのでご覧になってください。 さて、記事のメインテーマとは異なる事柄を挟みましたが、ここからはGo1.21に追加されたslicesパッケージの解説を行います。 Go1.21のアップデート内容に関しては、すでに多くの解説記事が公開されてい

          Go1.21:slicesパッケージのチートシート | フューチャー技術ブログ
        • Goの格言”Errors are values”の本質を読み解く

          24/4/23 Findy Goのエラーハンドリング 最新事情Lunch LTにて発表 https://findy.connpass.com/event/314417/

            Goの格言”Errors are values”の本質を読み解く
          • 【Go】Mapの内部構造とO(1)のメカニズム

            はじめに こんにちは、株式会社スマートショッピング エンジニアのhi6okuniです。 フロントエンドエンジニアとして主にReactを用いた開発に従事してきましたが、この半年間は幸運にも自社のバックエンドをGoで開発する機会に恵まれました。Goらしいコードを書く技術も日々学習中ですが、最近ではデータ構造そのものにも興味が湧いてきました。そこで今回、GoのMapの内部構造がどのように作られているのかを深堀りしてみることにしました。主な焦点はruntime/map.goのmapassign関数の解析になります。 ざっくり理解 始めにruntime/map.goファイルのMapのコメントを読んでみましょう。データ構造/仕組みが記載されています。 A map is just a hash table. The data is arranged into an array of buckets. E

              【Go】Mapの内部構造とO(1)のメカニズム
            • RawBytesは使い捨てよう - methaneのブログ

              go-mysql-driverに来たバグ報告を調べていたら、 database/sql.RawBytes の利用方法にハマるとデバッグの難しい落とし穴があったのを見つけたので、Go側のバグとは断言できないもののGo側で直すべきだと報告しました。他の人がハマらないように簡単に解説しておきます。 github.com RawBytesはtype RawBytes []byteのように宣言されていて、[]byteのように扱える。[]byteとの違いは、利用可能期間が短くてrows.Scan(&in)からrows.Next()かrows.Close()までの間にしか使えないという制約があることだ。 rows.Next()が呼ばれた時、ドライバーは受信バッファの中の文字列等のデータを浅い(shallow)コピーで返すことができる。そのデータは次にrows.Scan()が呼ばれた時に使われるのだが、S

                RawBytesは使い捨てよう - methaneのブログ
              • 「Go 1.22」がリリース ~Googleによる生産性と並列実行に優れたプログラミング言語/「for」ループに2点の仕様変更

                  「Go 1.22」がリリース ~Googleによる生産性と並列実行に優れたプログラミング言語/「for」ループに2点の仕様変更
                • Abstracting database/sql boilerplate with Go generics

                  An abstract vision of abstracting database/sql boilerplateIntroductionThis post is part of the Eureka Advent Calendar 2022. database/sql provides everything needed to work with SQL in Go, yet there’s an ever-growing list of query builders, ORMs and database utilities being developed by the community. Is database/sql really so bad? In this post we’ll explore what can be achieved using Go generics w

                    Abstracting database/sql boilerplate with Go generics
                  • 冗長なエラーログを削減し、スタックトレースを手に入れる / Reducing Verbose Error Logs and Obtaining Stack Traces

                    スライド内にリンクが複数あるため以下のSPA版で見ることを推奨します :) https://upamune.github.io/go-lunch-lt-2024-04 元ネタのブログ: https://tech.layerx.co.jp/entry/2023/11/29/132325 layerx.go #0: https://layerx.connpass.com/event/317228/

                      冗長なエラーログを削減し、スタックトレースを手に入れる / Reducing Verbose Error Logs and Obtaining Stack Traces
                    • octocovで任意のメトリクスを記録できるようにした(カスタムメトリクス) - Copy/Cut/Paste/Hatena

                      octocov octocovはコードカバレッジのためのツールキットです。 github.com コードカバレッジなどのコードメトリクスを手元のターミナルで確認したり、GitHub ActionsのActionとしてPull Requestにレポートしたりできます。 計測したコードメトリクスを、さまざまなデータストアに蓄積することもできます。 octocovはコードカバレッジ、Code to Test ratio、テスト実行時間の3つのコードメトリクスを計測しますが、今回、任意のメトリクスに対応しました。 カスタムメトリクス カスタムメトリクスの使用方法は簡単です。 計測したメトリクスを指定のフォーマットで保存する(カスタムメトリクスJSON) octocovに環境変数経由でカスタムメトリクスJSONの保存パスを渡す これだけです。 1. 計測したメトリクスを指定のフォーマットで保存する(

                        octocovで任意のメトリクスを記録できるようにした(カスタムメトリクス) - Copy/Cut/Paste/Hatena
                      • Kubernetes And Kernel Panics

                        How Netflix’s Container Platform Connects Linux Kernel Panics to Kubernetes Pods By Kyle Anderson With a recent effort to reduce customer (engineers, not end users) pain on our container platform Titus, I started investigating “orphaned” pods. There are pods that never got to finish and had to be garbage collected with no real satisfactory final status. Our Service job (think ReplicatSet) owners d

                          Kubernetes And Kernel Panics
                        • Perfectly Reproducible, Verified Go Toolchains - The Go Programming Language

                          Russ Cox 28 August 2023 One of the key benefits of open-source software is that anyone can read the source code and inspect what it does. And yet most software, even open-source software, is downloaded in the form of compiled binaries, which are much more difficult to inspect. If an attacker wanted to run a supply chain attack on an open-source project, the least visible way would be to replace th

                            Perfectly Reproducible, Verified Go Toolchains - The Go Programming Language
                          • ジョブに対する自動テスト実装のアプローチ

                            はじめに こんにちは、バックエンドを中心に開発をしている野島と申します。 最近は、弊社プロダクトであるSmartMat Cloudに対する自動テストの拡充を推し進めています。 SmartMat Cloudは在庫の重量を計測し、閾値を下回った際に自動で発注を行う機能を有するIoTプロダクトです。この記事ではその発注機能、特にジョブに対するテストについて共有します。 発注ジョブに対する自動テストを作成する中で、下記の課題がありました。 どのようにしてジョブを実行するか ジョブの実行結果はどう評価するか これらに対するアプローチを共有します。 どのようにしてジョブを実行するか 発注ジョブはCronで定期的に実行されており、テストをしたい任意のタイミングでどのように発注処理を実行するかが課題でした。 そこで、テスト用のWebAPIを作成し、これを呼び出すことでジョブと同じ処理を実行することにしまし

                              ジョブに対する自動テスト実装のアプローチ
                            • Decoupling a service from monolith with Protocol buffers and connect-go - LayerX エンジニアブログ

                              7月はLayerX エンジニアブログを活発にする期間 です! 昨日は、プロジェクト管理はNotionしか勝たん!MLチームのスプリント管理を改善した話 今日の1つ目の記事は、バクラク事業におけるデータ組織とデータ基盤 2023 今日2つ目の記事はバクラク事業部 Enabling Team エンジニアの @yyoshiki41(中川佳希)が担当します。 バクラクでは開発言語に Go を採用しており、gRPC サーバーとして buf/connect-go を利用しています。このブログでは、既存で動いているアプリケーションにどのようなアプローチで gRPC を導入していったかを紹介します。 導入まで buf/connect-go 自体は2022年7月頃に新規レポジトリで小さく試すところから行われました。 既存プロダクトで grpc-go のコード資産(開発ツールやミドルウェア、インフラ設定)を持

                                Decoupling a service from monolith with Protocol buffers and connect-go - LayerX エンジニアブログ
                              • moqを使ったGoのテスト

                                はじめに 本記事では matryer/moq というモックライブラリを利用したGoのテストのプラクティスについて紹介します。 moqはモック(狭義にはスパイ)・スタブの機能を持っており、その扱い方は非常にシンプルで直感的に扱えます。 その使い勝手に良さについて個人的にかなり気に入っており、実際にプロダクトのテストコードに利用しています。 一方で、moqはシンプルでユーティリティ的な側面が強いため、使い方を誤ると逆に管理しにくいテストコードになってしまいます。 本記事では『単体テストの考え方/使い方』という書籍を参考にしつつ、モック・スタブとしての役割に注意してmoqの使い方を提案してみます。 前提 いわゆるGoらしさの追求はこだわらない方針とします。具体的には、テーブル駆動は一旦忘れ、stretchr/testify を積極的に使うこととします。応用すればそうしないパターンでもいい感じに書

                                  moqを使ったGoのテスト
                                • Goaのlinterを作った: Goalint - エムスリーテックブログ

                                  永山です。 本記事では筆者の開発した、Go製のWebフレームワーク Goa (v3) 向けのlinterツール goalint を紹介します。 些細な間違いの検知を人間に頼ることはやめたい Goa とは モチベーション 既存のlinter goavl IBM OpenAPI Validator goalint 使用方法 goavlとのアプローチの違い 結果 We are hiring!! Goa とは goa.design Goaは、GoのDSLでHTTPやgRPCのAPIの仕様を記述するというアプローチが特徴的なGo製のWebフレームワークです。 昨今ではWeb APIの仕様の記述に OpenAPI を使用することも少なくないかと思いますが、GoaはそれをGo上で行うようなものであるといえます。 // Goaで記述されたAPI仕様の例 (以下より, 一部改変) // https://gi

                                    Goaのlinterを作った: Goalint - エムスリーテックブログ
                                  • 超薄いGoのCLI作成パッケージ google/subcommands 入門 | フューチャー技術ブログ

                                    はじめにTIG真野です。育休明けです。 GoでCLI(コマンドラインインターフェイス)の開発に役立つツールといえばいくつか選択肢があります。大きく分ければフラグのパースを支援するもの(標準のflagパッケージ、alecthomas/kong/go-flags、alecthomas/kongなど)と、開発フレームワークと言っても良い包括的に支援するもの(urfave/cli、spf13/cobraなど)の2つに分けられるかなと思います(※概念的に分けてみただけで捉え方によっては全てパーサだしフレームワークとみなしても良いかもしれません。あくまで個人的なイメージです)。 私は urfave/cli を利用することが多いのですが、spf13/cobra も人気ですよね。どちらも広く利用されていますが、支配的と言った感じではなく、例えば私がよく用いるterraformコマンドはmitchellh/

                                      超薄いGoのCLI作成パッケージ google/subcommands 入門 | フューチャー技術ブログ
                                    • Go 言語が生成するバイナリについて

                                      Go 言語で実装されたツールを運用したり解析する側の視点から、Go 言語が生成するバイナリについて気になることを調べた。 $ cat /etc/os-release NAME="Amazon Linux" VERSION="2023" $ go version go version go1.20.6 linux/amd64 シングルバイナリ基本的に Go 言語では、コンパイルするとシングルバイナリが生成される。たとえば次のようなファイルを用意し、 package main import "fmt" func main() { fmt.Println("hello world") } ビルドすると、次のようにスタティックリンクされたバイナリが生成される。 $ go build main.go $ file main main: ELF 64-bit LSB executable, x86-6

                                        Go 言語が生成するバイナリについて
                                      • GitHub - 0x2E/fusion: A lightweight, self-hosted friendly RSS aggregator and reader

                                        You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                          GitHub - 0x2E/fusion: A lightweight, self-hosted friendly RSS aggregator and reader
                                        • Go 言語のカレンダー | Advent Calendar 2023 - Qiita

                                          edit_calendarHow to join the calendarYou can join the calendar by selecting an available date and registering the URL of the article you wish to link to. If a slot is available, you can go back to a past date to join!

                                            Go 言語のカレンダー | Advent Calendar 2023 - Qiita
                                          • ActionsでM1 Macが無料で使えるように。DockerやGoの話も|Productivity Weekly(2024-01-31号)

                                            こんにちは。サイボウズ株式会社 生産性向上チームの平木場です。 僕たち生産性向上チームは毎週水曜日に Productivity Weekly という「1 週間の間に発見された開発者の生産性向上に関するネタを共有する会」を社内で開催しています。 本記事はその時のネタをまとめたものです。 2023-01-25 号から、基本的に隔週で連載することとしました。たまに単独でも投稿するかもしれません。 今週は 2024-01-31 単独号です。 今回が第 141 回目です。過去の記事はこちら。 news 📺 GitHub Actions で M1 macOS ランナーが public リポジトリで無料に使えるようになりました GitHub Actions: Introducing the new M1 macOS runner available to open source! - The GitH

                                              ActionsでM1 Macが無料で使えるように。DockerやGoの話も|Productivity Weekly(2024-01-31号)
                                            • Grafana Pyroscope を用いて Go のアプリケーションで継続的プロファイルしてみた

                                              ■ はじめに こんにちは 👋 みなさんプロファイルしてますか? プロファイルはオブザーバビリティの主要なテレメトリーの一つです。(主要なテレメトリーはログ・トレース・メトリクスだけではないですよ!) この記事では Go のサンプルアプリケーションを用いてプロファイルを計測し、アプリケーションの性能改善を行う方法を紹介します。稼働中のサービスを継続的にプロファイルすることで、CPU 使用率やメモリ割り当てなどの情報を収集し、自分のサービスのパフォーマンスに関する理解を深めることができとても有用です。 プロファイルの分析にはオープンソースの継続的プロファイルツールである Grafana Pyroscope (最近 v1.0.0 がリリースされました 🎉 )を用い、これらを Kubernetes 上に展開していきます。 また本記事は、CNDF2023 の @ymotongpoo さんの "継

                                                Grafana Pyroscope を用いて Go のアプリケーションで継続的プロファイルしてみた
                                              • actions/cache@v4ではヒットしなかったときcache-hit=='false'にならない - ぽよメモ

                                                cache-hitとは v4における挙動変更(?) cache-hitがfalseを返さない ワークアラウンド cache-hitとは GitHub Actionsのキャッシュ用actionであるactions/cacheは、指定したキーに完全一致するキャッシュがヒットしたかどうかのパラメータをそのstepのoutputとして保持している。 つまり以下の様にすることで、キャッシュがヒットしたかどうかを判定し、何かアクションするということが可能である。 jobs: run: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/cache@v4 id: cache with: path: ./cache-dir key: your-cache-key - if: steps.cache.output

                                                  actions/cache@v4ではヒットしなかったときcache-hit=='false'にならない - ぽよメモ
                                                • Introduction | templ docs

                                                  templ - build HTML with Go​ Create components that render fragments of HTML and compose them to create screens, pages, documents, or apps. Server-side rendering: Deploy as a serverless function, Docker container, or standard Go program. Static rendering: Create static HTML files to deploy however you choose. Compiled code: Components are compiled into performant Go code. Use Go: Call any Go code,

                                                    Introduction | templ docs
                                                  • Deconstructing Type Parameters - The Go Programming Language

                                                    The Go Blog Deconstructing Type Parameters Ian Lance Taylor 26 September 2023 slices package function signatures The slices.Clone function is pretty simple: it makes a copy of a slice of any type. func Clone[S ~[]E, E any](s S) S { return append(s[:0:0], s...) } This works because appending to a slice with zero capacity will allocate a new backing array. The function body winds up being shorter th

                                                      Deconstructing Type Parameters - The Go Programming Language
                                                    • Go 1.22のEnhanced ServeMux chiから移行できるのか?

                                                      Jetpack ComposeとGraphQLによるServer Driven UI/jetpackcompose-grahpql-serverdrivernui

                                                        Go 1.22のEnhanced ServeMux chiから移行できるのか?
                                                      • Common Go Mistakes - 100 Go Mistakes and How to Avoid Them

                                                        Go Mistakes Book Details Common Go Mistakes This page is a summary of the mistakes in the 100 Go Mistakes and How to Avoid Them book. Meanwhile, it's also open to the community. If you believe that a common Go mistake should be added, please create an issue. Jobs Is your company hiring? Sponsor this repository and let a significant audience of Go developers (~1k unique visitors per week) know abou

                                                          Common Go Mistakes - 100 Go Mistakes and How to Avoid Them
                                                        • 後方互換性のあるGoだからこそ実装依存なコードに気をつけたい話

                                                          \スニダンを開発しているSODA inc.の Advent Calendar 2023 21日目の記事です!!!/ そして今日はIPAデータベーススペシャリスト試験の合格発表日でもあります! 無事合格してました!(これを書いているときはまだ発表前なので未来の記憶です) はじめに Goの大きな特徴として後方互換性が保たれているので、言語のバージョンアップのハードルが低いというメリットがありますよね。 ですが、そんなGoでも完全な互換性を保証しているわけではありません。特定のケースにおいてバージョンアップによってプログラムを壊す可能性があるのです。 実際に遭遇することは少ないかもしれませんが、どういうケースでそれが起こるのか、どうすれば回避できるのか、実際にあった過去の事例を交えて知っておくと、バージョンアップ時の漠然とした不安を減らし後方互換性の恩恵を最大化できるようになると思います。 実際

                                                            後方互換性のあるGoだからこそ実装依存なコードに気をつけたい話
                                                          • ISUCON13 利用言語比率 : ISUCON公式Blog

                                                            ISUCON13 の利用言語比率を公開します。694チームの参加があり、運営で利用言語を把握できたのは657チームとなりました。 ISUCON13 利用言語比率利用率の全体ランキングは以下の通りです Go   465組 70.8% Ruby   61組   9.3% Nodejs 47組   7.2% Python 34組   5.2% Rust  25組   3.8% PHP  19組   2.9% Perl     5組   0.8% Bun     1組   0.2% 上位30チームに限定すると以下となりました Go   29組 96.7% Ruby   1組   3.3% なお、ISUCON13 の言語移植は以下の皆さんにご協力いただきました。ありがとうございました。 ・Perl @kfly8 ・PHP @okashoi ・Python misodengaku ・Ruby&Rust

                                                              ISUCON13 利用言語比率 : ISUCON公式Blog
                                                            • Go 1.22リリース連載 vet, log/slog, testing/slogtest | フューチャー技術ブログ

                                                              はじめにTIG 真野です。Go1.22連載の6本目です。 Go 1.22のアップデートのツーリングのうち Vet と、ライブラリのマイナーアップデートである log/slog, testing/slogtest を取り上げて紹介します。 アップデートサマリVetでループ変数の変数キャプチャを検知しなくなった #63888Vetで slice1 = append(slice1) の操作を検知するようになりました #63888Vetで defer で time.Since() が呼ぶ操作を検知するようになりました #60448Vetで不正な log/slog なキーと値のペアを検知するようになりました #59407log/slog で SetLogLoggerLevel()が追加されました #62418testing/slogtestで Run() 関数が追加されサブテストの制御がしやすくなり

                                                                Go 1.22リリース連載 vet, log/slog, testing/slogtest | フューチャー技術ブログ
                                                              • UseCaseの凝集度を高める Goのpackage戦略 / Go packaging strategy to increase use case cohesion

                                                                UseCaseの凝集度を高める Goのpackage戦略 / Go packaging strategy to increase use case cohesion

                                                                  UseCaseの凝集度を高める Goのpackage戦略 / Go packaging strategy to increase use case cohesion
                                                                • Go Conference 2024 登壇した #gocon - 私が歌川です

                                                                  Go Conference 2024に参加し、登壇してきました。 登壇しました Dive into gomockというタイトルで発表しました。2トラックのどちらかで40分トークかな? と思っていたら2部屋ぶち抜きでトークだったのでビビっていました。 発表資料はこちらです。 speakerdeck.com gomockの内部実装を見て、なぜライブラリの内部実装を見るのがよいことなのか、という話をしました。reflectパッケージが好きなので合間にreflectパッケージの話もしています。つまり主題が3つあるわけですね。 gomockの内部実装を見よう リフレクションを知ろう なぜライブラリの内部実装を見るのか知ろう 今回はgomockの実装を掘り下げることで、魔法のように見えるイディオムの裏にある処理を知ろう、という方向性でやりました。今回の発表でgomockの内部実装を全員が完全理解できた

                                                                    Go Conference 2024 登壇した #gocon - 私が歌川です
                                                                  • Go 1.21 で追加された log/slog を本番環境に実戦投入しました

                                                                    この記事は Go Advent Calendar 2023 7 日目の記事です。 こんにちは。ARIGATOBANK バックエンドエンジニアの富樫です。 私たちのチームでは、バックエンドシステムのすべてを Go 言語で構築しています。これまでロギングライブラリとして主に zap を利用してきましたが、最近 Go 1.21 で追加された log/slog を本番環境の一部サービスで利用し始めました。 この記事では、log/slog を開発や本番環境へ投入するにあたってカスタマイズした実装の詳細について共有します。 log/slog とはGo 1.21 で標準ライブラリに加わった log/slog は、構造化ロギングをサポートするログパッケージです。 slog package — log/slog — Go Packages 基本的な使い方はこんな感じです。 package main impo

                                                                      Go 1.21 で追加された log/slog を本番環境に実戦投入しました
                                                                    • タクシーアプリGO、訪日外国人も利用可能に

                                                                        タクシーアプリGO、訪日外国人も利用可能に
                                                                      • GitHub - philippta/flyscrape: A standalone and scriptable web scraper in Go

                                                                        You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

                                                                          GitHub - philippta/flyscrape: A standalone and scriptable web scraper in Go
                                                                        • Don’t return err in Go — akavel's digital garden

                                                                          Instead, add missing details relevant for debugging. Some people like to complain that Go requires writing tons of “if err != nil { return err }” blocks. Those people don’t understand Go errors. The thing is, what they complain about is actually a completely wrong way of handling errors in Go: return err is an antipattern. Let me show what I mean on some sample code: a helper library for configuri

                                                                          • Enablement Bootcamp for Gopherizing 〜 業務で使えるGoを学ぼう 〜|Knowledge Work Developers blog

                                                                            はじめにナレッジワーク Enablement Groupの上田(@tenntenn)です。 私が所属するEnablement Groupでは、「エンジニア職にできる喜びを届ける」というミッションを掲げて、エンジニアイネーブルメント事業を行っています。 具体的には、Goエンジニア向けの_YOUR WORK for Gophers(β)の開発、Enablement WorkshopやEnablement Internshipなどのイベントの企画・運営などを行っています。 本記事ではエンジニアイネーブルメント事業の1つとして行なう予定の「Enablement Bootcamp for Gopherizing 〜業務で使えるGoを学ぼう〜」について、開催に向けて思いを述べます。 なお、エンジニアと表記した場合、ソフトウェアエンジニアを表しています。 エンジニア採用におけるジレンマ企業の事業やミッシ

                                                                              Enablement Bootcamp for Gopherizing 〜 業務で使えるGoを学ぼう 〜|Knowledge Work Developers blog
                                                                            • failureでお手軽エラーハンドリング

                                                                              failureでお手軽エラーハンドリング 2024/04/23 Goのエラーハンドリング 最新事情Lunch LT morikuni

                                                                                failureでお手軽エラーハンドリング
                                                                              • 【2024】Go言語おすすめライブラリ15選 - Qiita

                                                                                Go言語ライブラリ15選 Golangのおすすめのライブラリを15個(+おまけ1個)紹介します。ライブラリの特徴、インストール方法、使い方を徹底解説していきます。 cmp テストで等価性を調べるために使うライブラリ。reflect.DeepEqualははオブジェクトが完全一致していないと false になるが、cmp を使うとスライスの順番を無視できたり、一部のフィールドを比較対象から除外したり、様々なオプションを追加することができる。また、diffで差分を出すこともできる。 package main import ( "fmt" "reflect" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" ) func main() { slice1 := []int{1, 2, 3} slice2 :=

                                                                                  【2024】Go言語おすすめライブラリ15選 - Qiita
                                                                                • Go言語でdata raceが起きるときに起きる(かもしれない)こと

                                                                                  はじめに この記事は、プログラミングにおいて特に難しいことの1つである「並行処理」に関する記事です。特に、「並行処理」を行うときに意図せず発生させてしまいやすい「data race」について書きます。data raceがどのような驚くべき問題を引き起こすかを、簡単に動かせるサンプルコードで具体的に見ていきます。 すべてのサンプルコードにplaygroundがついていますから、とりあえず気軽に動かしてみるだけみたいな読み方もできます。むしろそれがおすすめかもしれません。 プログラム言語としてGoを使いますが、内容的にはGoに限らず当てはまると思います。ただし、data raceに関してはプログラム言語ごとに微妙なアプローチの違いがあるので、それについては最後に少しだけ補足します。 ところで、ソフトウェア開発では、data raceを一切発生させない状態を目指すべきだと筆者は考えています。Da

                                                                                    Go言語でdata raceが起きるときに起きる(かもしれない)こと