Go

Go の errors.Join の挙動を調べた

IT Go

Go 1.20 で追加された errors.Join の挙動を調べてみたので、備忘録としてポストしておく。 errors.Join の概要 Go doc と実装をベースに概要を簡単にまとめる。 errors.Join は error を返す。返された error は内部的に引数に渡された可変数の error を保…

Go ジェネリクスの基礎を学ぶ

Go IT

Go 1.18 でジェネリクスが導入されてからこれまで雰囲気でジェネリクスを使用してきました。 ここらでちゃんと仕様を体に覚え込ませたいと思い立ち、公式の文書を読みつつ手を動かした記録を記事として残すことにしました。 少しずつ理解を深めていく経緯を…

Go Conference mini 2023 Winter IN KYOTO レポート

Go IT

2023-12-02 に開催された「Go Conference mini 2023 Winter IN KYOTO」にオンライン参加しました。 今回は時間的に余裕があったので、ほとんど全てのセッションを聴くことができました。 本記事は、セッションの中でも特に興味深かったものについて簡単にま…

terraform-aws-providerへコントリビュートした

本記事はZennに投稿した記事の複製です。 先日、terraform-aws-providerにコントリビュートし、大規模?OSSへのコントリビュート経験をGETしました。 マージされた改修は、v5.26.0にて無事リリースされました。 https://github.com/hashicorp/terraform-prov…

Dirty Read を Go の sql パッケージを使って検証する

DB IT Go

Dirty Read の概念を学んだので、動作を試すのに Go の sql パッケージを使って検証スクリプトを書いてみる。 こういうのは手を動かしてみると記憶に残る。 検証はローカルで行う。 DBMSは MySQL を使う。 compose.yaml はこちら。 services: # MySQL mydb: …

【ChatGPTに聞いてみた】Go言語のmapをテーブル形式で出力する

Go IT

mapの中身を綺麗にデバッグしたいので、mapをテーブル形式でコンソール出力したいことがあった。 ChatGPTに聞きつつ、軽い修正したら完成しそうなのでやってみた。 今回使用するModelはGPT-4である。 あなたはGo言語のプロフェッショナルです。 map型の値を…

for文を書きたくないGoプログラマー達へ

Go IT

Go言語は書き振りが冗長であると言われることが多々ある。 例えば、int型のスライスから値が10の値だけを抽出したい場合には下記のように書く。 package main import "fmt" func main() { intSlice := []int{1, 10, 100} result := []int{} for _, v := rang…

Go 1.20.0 にて math/rand のグローバルな乱数生成器のタネが固定値では無くなった

IT Go

Go 1.20.0 が先日リリースされた。 気になる機能はいくつかあるが、職場にて math/rand パッケージが話題に上がっていたのでチェックしてみた。 ちなみに arena パッケージの実験的サポート、errors.Join 、context.Context の Cause あたりが気になる機能で…