Apps Artificial Intelligence CSS DevOps Go JavaScript Laravel Linux MongoDB MySQL PHP Python Rust Vue

Cara Bikin Enum di Go

1 min read .
Cara Bikin Enum di Go

Kalau kamu datang dari bahasa lain (misalnya Java, C#, atau TypeScript), pasti familiar sama yang namanya enum. Enum itu enak banget buat ngebuat sekumpulan nilai bernama yang jelas artinya.

Nah, di Go sayangnya nggak ada enum bawaan. Tapi jangan sedih—dengan sedikit trik, kita tetap bisa bikin sesuatu yang mirip enum pakai konstanta dan tipe kustom.

1. Enum Sederhana dengan const + iota

Cara paling dasar: pakai const dan iota. iota itu semacam counter otomatis yang bikin nilai integer berurutan.

package main

import "fmt"

const (
	Red = iota
	Green
	Blue
)

func main() {
	fmt.Println("Red:", Red)
	fmt.Println("Green:", Green)
	fmt.Println("Blue:", Blue)
}

Outputnya bakal:

Red: 0
Green: 1
Blue: 2

Gampang kan? Tapi masih terasa “mentah” karena cuma angka.

2. Tambahin Tipe Kustom Biar Lebih Rapi

Supaya lebih jelas maksudnya, kita bisa bikin tipe kustom, misalnya Color.

type Color int

const (
	Red Color = iota
	Green
	Blue
)

Sekarang variabel-variabel ini punya konteks lebih jelas: mereka bagian dari tipe Color, bukan sekadar integer biasa. Ini bikin kode lebih aman dan gampang dipahami.

3. Biar Bisa Dicetak Sebagai String

Masalah dengan enum berbasis integer: kalau diprint, hasilnya cuma angka. Biar lebih manusiawi, kita bisa bikin method String().

func (c Color) String() string {
	switch c {
	case Red:
		return "Red"
	case Green:
		return "Green"
	case Blue:
		return "Blue"
	default:
		return "Unknown"
	}
}

Sekarang kalau kita print:

fmt.Println(Green) 

Outputnya:

Green

Jauh lebih enak dibaca kan?

4. Enum Sebagai Bit Flags

Kadang kita butuh enum yang bisa digabung (misalnya permission: read, write, execute). Triknya: pakai bit flags.

type Flags uint

const (
	FlagA Flags = 1 << iota
	FlagB
	FlagC
	FlagD
)

func main() {
	flags := FlagA | FlagC
	fmt.Println("Has FlagA:", flags&FlagA != 0)
	fmt.Println("Has FlagB:", flags&FlagB != 0)
}

Jadi kita bisa simpan banyak status dalam satu variabel.

Ringkasnya

  • Go nggak punya enum bawaan, tapi kita bisa bikin sendiri pakai const + iota.
  • Tambahin tipe kustom biar lebih aman dan jelas.
  • Implementasikan String() biar enak diprint.
  • Kalau perlu enum yang bisa digabung, pakai bit flags.

Dengan trik-trik ini, enum di Go tetap bisa powerful dan gampang dipakai.

Lihat Juga

chevron-up