応用

kindでKubernetes(k8s)のローカル開発環境を作ってGo言語(Golang)のAPIをデプロイする方法

こんにちは。Tomoyuki(@tomoyuki65)です。Go言語(Golang)はマイクロサービスでよく使われたりしますが、そんなマイクロサービスを大規模なサービスで開発している場合、インフラにはKubernetes(略してk8s)を使...
基礎

Go言語(Golang)でマップ(map)型の排他制御にはsync.Mapを使う!

こんにちは。Tomoyuki(@tomoyuki65)です。以前の記事でgoroutine(ゴールーチン)による並行処理や、mutex(ミューテックス)による排他制御などについて解説しましたが、排他制御が可能なマップ(map)型を扱うことが...
基礎

Go言語(Golang)のイテレータ(range over func)について

こんにちは。Tomoyuki(@tomoyuki65)です。Go言語(Golang)のバージョン1.23からイテレータ(range over func)が導入され、引数に「yield」のついた関数が「for range文」で扱えるようになり...
基礎

Go言語(Golang)の空インターフェース型(interface{})とジェネリクスで未知の型を扱う方法

こんにちは。Tomoyuki(@tomoyuki65)です。Go言語(Golang)には未知の型を扱う方法として、全ての型を受け取れる空インターフェース型(interface{})と、Goのバージョン1.18から導入されたジェネリクスという...
基礎

Go言語(Golang)の配列(array)・スライス(slice)・マップ(map)の使い方や違いについて

こんにちは。Tomoyuki(@tomoyuki65)です。Go言語(Golang)で複数のデータを扱う際は配列(array)、スライス(slice)、マップ(map)を利用しますが、使い方や違いについて迷うことがあると思います。この記事で...
基礎

Go言語(Golang)のインターフェースで共通機能を実装する!

こんにちは。Tomoyuki(@tomoyuki65)です。以前の記事で構造体とメソッドの基礎について解説しましたが、さらにインターフェースを使うことで型の種類(構造体の種類)を気にせずに共通の機能(メソッド)を実行させることが可能です。こ...
基礎

Go言語(Golang)の動的な文字列結合にはstrings.Builderを使う!

こんにちは。Tomoyuki(@tomoyuki65)です。Go言語(Golang)で文字列結合をする際はいくつか方法がありますが、動的な文字列結合をしたい場合は"strings.Builder"を使うのが最適です。この記事では、そんなst...
応用

Dockerによる負荷テストツール(k6・Prometheus・Grafana)の使い方

こんにちは。Tomoyuki(@tomoyuki65)です。今回はGo言語からは少し離れますが、実務においては作成したAPIの負荷テストをしておくのは重要だったりすると思います。そんな負荷テストをするためのツールとして、「k6・Promet...
基礎

Go言語(Golang)のログ出力ではslogが使える!コンテキストの引き回しも忘れずに。

こんにちは。Tomoyuki(@tomoyuki65)です。Go言語(Golang)でログ出力をする際にはfmt.Printlnなどを使うことがありますが、Goのv1.21からは標準ライブラリとして"log/slog"が使えます。この記事で...
応用

Go言語(Golang)のAPIをGoogleのCloud SQLとCloud Runでデプロイする方法

こんにちは。Tomoyuki(@tomoyuki65)です。以前にGo言語(Golang)でEchoのAPIを開発する方法に関する記事を書きましたが、今回はそのコードを使ってGoogleのCloud SQL(MySQL)とCloud Run...
スポンサーリンク