enum

package module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 14, 2023 License: MIT Imports: 5 Imported by: 0

README

go-enum

go 枚举

Installation

go get github.com/xzregg/go-enum

Examples

A basic example:

import (
"fmt"
"github.com/xzregg/go-enum"
"testing"
)

func TestEnum_GetLabel(t *testing.T) {

	ColorEnum := enum.GenerateEnum(&struct {
		enum.Enum `key:"color" label:"颜色"`
		Red       string `key:"red" label:"红色" choise:"order_status" `
		Yellow    string `key:"yellow" label:"黄色"`
		Black     int    `key:"1" label:"黑色"`
		White     int    `key:"2" label:"白色"`
	}{})

	fmt.Printf("%v %v\n", ColorEnum.GetEnumName(), ColorEnum.GetLabel("red")) // color 红色
	fmt.Printf("AllEnumMap[\"color\"] i=%p  ColorEnum.EnumMap i=%p\n", enum.AllEnumMap["color"], ColorEnum.GetEnumMap())
	fmt.Printf("%+v\n", enum.AllEnumMap["color"]) // map[1:黑色 2:白色 red:红色 yellow:黄色]
	fmt.Printf("%+v\n", enum.AllEnumMap["color"]["yellow"]) // 黄色

	if ColorEnum.Red != "red" {
		t.Errorf("ColorEnum.Red != red")
	}
	if ColorEnum.White != 2 {
		t.Errorf("ColorEnum.White != 2")
	}

}

License

MIT, see LICENSE

Documentation

Index

Constants

This section is empty.

Variables

View Source
var AllEnumMap = make(map[string]map[any]string)

Functions

func GenerateEnum

func GenerateEnum[T EnumInterFace](enumStruct T) T

GenerateEnum 如果一个函数的参数是接口类型,传进去的参数可以是指针,也可以不是指针,这得看你传的对象是怎么实现这个接口类型的 如果实现接口的方法的接收器是指针类型,则传参给接口类型时必需是指针,如果不是,则随便传

func GetDefaultFiller

func GetDefaultFiller(tagLookup string) *defaults.Filler

Types

type Enum

type Enum struct {
	EnumMap map[any]string
	// contains filtered or unexported fields
}

func (*Enum) GetEnumMap

func (e *Enum) GetEnumMap() map[any]string

func (*Enum) GetEnumName

func (e *Enum) GetEnumName() string

func (*Enum) GetLabel

func (e *Enum) GetLabel(key any) string

func (*Enum) InitMap

func (e *Enum) InitMap(enumName string)

func (*Enum) SetLabel

func (e *Enum) SetLabel(key any, label string)

type EnumInterFace

type EnumInterFace interface {
	InitMap(enumName string)
	GetLabel(key any) string
	SetLabel(key any, label string)
	GetEnumMap() map[any]string
	GetEnumName() string
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL