基礎 Go言語(Golang)でマップ(map)型の排他制御にはsync.Mapを使う! こんにちは。Tomoyuki(@tomoyuki65)です。以前の記事でgoroutine(ゴールーチン)による並行処理や、mutex(ミューテックス)による排他制御などについて解説しましたが、排他制御が可能なマップ(map)型を扱うことが... 2025.02.02 基礎
基礎 Go言語(Golang)のイテレータ(range over func)について こんにちは。Tomoyuki(@tomoyuki65)です。Go言語(Golang)のバージョン1.23からイテレータ(range over func)が導入され、引数に「yield」のついた関数が「for range文」で扱えるようになり... 2025.01.31 基礎
基礎 Go言語(Golang)の空インターフェース型(interface{})とジェネリクスで未知の型を扱う方法 こんにちは。Tomoyuki(@tomoyuki65)です。Go言語(Golang)には未知の型を扱う方法として、全ての型を受け取れる空インターフェース型(interface{})と、Goのバージョン1.18から導入されたジェネリクスという... 2025.01.31 基礎
基礎 Go言語(Golang)の配列(array)・スライス(slice)・マップ(map)の使い方や違いについて こんにちは。Tomoyuki(@tomoyuki65)です。Go言語(Golang)で複数のデータを扱う際は配列(array)、スライス(slice)、マップ(map)を利用しますが、使い方や違いについて迷うことがあると思います。この記事で... 2025.01.29 基礎
基礎 Go言語(Golang)のインターフェースで共通機能を実装する! こんにちは。Tomoyuki(@tomoyuki65)です。以前の記事で構造体とメソッドの基礎について解説しましたが、さらにインターフェースを使うことで型の種類(構造体の種類)を気にせずに共通の機能(メソッド)を実行させることが可能です。こ... 2025.01.28 基礎
基礎 Go言語(Golang)の動的な文字列結合にはstrings.Builderを使う! こんにちは。Tomoyuki(@tomoyuki65)です。Go言語(Golang)で文字列結合をする際はいくつか方法がありますが、動的な文字列結合をしたい場合は"strings.Builder"を使うのが最適です。この記事では、そんなst... 2025.01.06 基礎
基礎 Go言語(Golang)のログ出力ではslogが使える!コンテキストの引き回しも忘れずに。 こんにちは。Tomoyuki(@tomoyuki65)です。Go言語(Golang)でログ出力をする際にはfmt.Printlnなどを使うことがありますが、Goのv1.21からは標準ライブラリとして"log/slog"が使えます。この記事で... 2024.12.11 基礎
基礎 Go言語(Golang)はクラスが無いけど構造体とメソッドがある こんにちは。Tomoyuki(@tomoyuki65)です。Go言語(Golang)には他のプログラミング言語にあるクラスの概念はありませんが、その代わりに構造体というものがあります。この記事では、そんな構造体について解説します。Go言語(... 2024.09.17 基礎
基礎 Go言語(Golang)のプログラミングで癖のあるポイントまとめ こんにちは。Tomoyuki(@tomoyuki65)です。Go言語(Golang)のプログラミングを学ぶ際に、他のプログラミング言語とは違う癖のある部分が色々あったりすると思います。私も初めて学んだ際には「これってどういうこと??」という... 2024.09.16 基礎
基礎 Go言語(Golang)のmutex(ミューテックス)でgoroutine(ゴールーチン)の排他制御を知る! こんにちは。Tomoyuki(@tomoyuki65)です。Go言語(Golang)でgoroutine(ゴールーチン)から共有リソースに対して読み書きをする必要がある場合、何も考慮しなければ競合状態になってエラーが発生する可能性があるので... 2024.09.15 基礎