首次提交:初始化项目代码
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"time"
|
||||
)
|
||||
|
||||
// CustomTime 自定义时间类型,复用标准库文本序列化接口
|
||||
type CustomTime time.Time
|
||||
|
||||
// MarshalText 实现文本序列化(对应默认值展示)
|
||||
func (t CustomTime) MarshalText() ([]byte, error) {
|
||||
return []byte(time.Time(t).Format(time.RFC3339)), nil
|
||||
}
|
||||
|
||||
// UnmarshalText 实现文本反序列化(参数解析核心)
|
||||
func (t *CustomTime) UnmarshalText(b []byte) error {
|
||||
parseTime, err := time.Parse(time.RFC3339, string(b))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
*t = CustomTime(parseTime)
|
||||
return nil
|
||||
}
|
||||
|
||||
// 枚举类型示例:自定义运行模式
|
||||
type RunMode string
|
||||
|
||||
const (
|
||||
ModeDev RunMode = "dev"
|
||||
ModeProd RunMode = "prod"
|
||||
)
|
||||
|
||||
func (m RunMode) MarshalText() ([]byte, error) {
|
||||
return []byte(m), nil
|
||||
}
|
||||
|
||||
func (m *RunMode) UnmarshalText(b []byte) error {
|
||||
val := RunMode(b)
|
||||
if val != ModeDev && val != ModeProd {
|
||||
return fmt.Errorf("非法运行模式,仅支持 dev/prod")
|
||||
}
|
||||
*m = val
|
||||
return nil
|
||||
}
|
||||
|
||||
func main() {
|
||||
// 1. 自定义时间参数 TextVar 绑定
|
||||
var execTime CustomTime
|
||||
defaultTime := CustomTime(time.Now())
|
||||
flag.TextVar(&execTime, "exec-time", defaultTime, "执行时间(RFC3339格式)")
|
||||
|
||||
// 2. 自定义枚举参数 TextVar 绑定
|
||||
var runMode RunMode
|
||||
flag.TextVar(&runMode, "mode", ModeDev, "运行模式 dev/prod")
|
||||
|
||||
flag.Parse()
|
||||
|
||||
fmt.Printf("运行模式:%s\n", runMode)
|
||||
fmt.Printf("执行时间:%s\n", time.Time(execTime).Format(time.RFC3339))
|
||||
}
|
||||
Reference in New Issue
Block a user