Go의 열거형?
7763 단어 go
Golang에는 열거자가 없습니다!
enum을 go에서 시뮬레이션하는 간단한 방법을 보여 드리겠습니다.
package domain
type Status uint8
const (
Creating Status = iota
Pending
Expired
Paid
Canceled
Error
Unknown
)
func (s Status) ToString() string{
switch s {
case Creating:
return "Creating"
case Pending:
return "Pending"
case Expired:
return "Expired"
case Paid:
return "Paid"
case Canceled:
return "Canceled"
}
return "Unknown"
}
사용:
statusCanceled := Canceled.ToString()
// in another package
statusCanceled := domain.Cenceled.ToString()
테스트:
package domain
import (
"github.com/stretchr/testify/assert"
"testing"
)
func TestToString(t *testing.T) {
type test struct {
description string
input Status
expected string
}
tests := []test{
{description: "should return Creating", input: Creating, expected: "Creating"},
{description: "should return Pending", input: Pending, expected: "Pending"},
{description: "should return Expired", input: Expired, expected: "Expired"},
{description: "should return Paid", input: Paid, expected: "Paid"},
{description: "should return Canceled", input: Canceled, expected: "Canceled"},
{description: "should return Error", input: Error, expected: "Error"},
{description: "should return Unknown", input: Unknown, expected: "Unknown"},
}
for _, item := range tests {
t.Run(item.description, func(t *testing.T) {
assert.Equal(t, item.expected, item.input.ToString())
})
}
}
Reference
이 문제에 관하여(Go의 열거형?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rafaelgfirmino/enum-in-go--34bh텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)