Go enum的实现和封装

13 min read
package api

// UnknownID is the ID for unknowns.
const UnknownID = -1

// RowStatus is the status for a row.
type RowStatus string

const (
	// Normal is the status for a normal row.
	Normal RowStatus = "NORMAL"
	// Archived is the status for an archived row.
	Archived RowStatus = "ARCHIVED"
)

func (e RowStatus) String() string {
	switch e {
	case Normal:
		return "NORMAL"
	case Archived:
		return "ARCHIVED"
	}
	return ""
}

这段代码定义了一个名为api的包,并导出了三个常量和一个类型RowStatus。常量UnknownID的值为-1,用于表示未知ID。类型RowStatus表示行的状态,它是一个字符串类型。常量Normal表示行的正常状态,值为"NOMAL";常量Archived表示行的归档状态,值为"ARCHIVED"。

RowStatus类型中还定义了一个方法String(),它用来将RowStatus类型的值转换成字符串类型。该方法使用了一个switch语句,根据不同的RowStatus值返回对应的字符串。如果RowStatus的值不在NormalArchived中,则返回空字符串。

这段代码的作用是定义了一些常量和类型,用于表示行的状态。它还提供了一个方法String(),方便将RowStatus类型的值转换成字符串。该包可以被其他代码导入和使用。