Keito

© 2024 Keito

技術ブログとポートフォリオ

【Go】iotaの使い方メモ

更新日2025/5/17/(土) 06:14
タグ
Go

概要

  • Goのiotaは定数の連番を簡単に定義できる機能
  • 実務で目にしたことがあるパターンのメモ

iotaについて

  • Goのiotaは、constブロックの中で連番の定数を簡単に定義できる予約語
  • 通常、0から始まり、1ずつインクリメントされる
const ( A = iota // 0 B // 1 C // 2 )

状態や種別の識別子

  • 状態管理が数字ベースで統一でき、定義もすっきりする
type UserStatus int const ( StatusActive UserStatus = iota StatusSuspended StatusDeactivated )

フラグのビット値管理(ビットマスク)

  • 複数のフラグをビット単位でまとめて管理・判定できる
const ( FlagRead = 1 << iota // 1 << 0 → 0001 FlagWrite // 1 << 1 → 0010 FlagDelete // 1 << 2 → 0100 ) func hasPermission(flags, permission int) bool { return flags&permission != 0 }

エラーコード番号の整理

  • エラーコードの先頭値を固定しつつ、連番管理が簡単にできる
type ErrorCode int const ( ErrNotFound ErrorCode = iota + 1000 // 1000 ErrInvalidRequest // 1001 ErrPermissionDenied // 1002 )

iota利用時の注意したいこと

  • constブロックごとにリセットされる
  • 式が複雑になると、iotaの値がわかりづらくなることもあるのでコメントで値の意図を残すのがよいかも
  • あくまでコンパイル時定数のみに使える(動的な値には使えない)