mengpo

package module
v0.0.5 Latest Latest
Warning

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

Go to latest
Published: Nov 15, 2021 License: Apache-2.0 Imports: 7 Imported by: 0

README

mengpo(孟婆)

Golang默认值设置工具,支持功能

  • 支持近乎所有的内置类型
    • int
    • int8
    • int32
    • int64
    • uint
    • uint8
    • uint32
    • uint64
    • bool
    • float32
    • float64
  • 支持复杂类型
    • slice
    • map
    • struct
  • 支持配置
    • 配置所使用的tag名称
  • 支持复杂结构初始化值
    • 支持json初始化值设置
    • 支持更易于书写的初始化值
  • 支持类型别名
  • 支持指针类型
  • 支持环境变量

为什么要叫孟婆

按照本人的一惯作风,所有项目都在中国古代神话人物或者历史名人寻找和项目意义相近神话人物或者历史人来做作为项目的名称,原因

  • 去TMD崇洋媚外
  • 致敬中华民族的先贤

孟婆作为阴司掌管生死轮回的大神,有将一切人物还原到最被的状态,这和设置默认值不谋而和,故而使用孟婆来命名项目是合适的

使用方法

简单使用

使用非常简单,只需要调用mengpo.Set就可以了

package main

import `github.com/storezhang/mengpo`

type testByNormal struct {
    Addr string `default:"127.0.0.1"`
    Port int    `default:"80"`
}

func main() {
    normal := new(testByNormal)
    if err := mengpo.Set(normal); nil != err {
        panic(err)
    }
}
配置标签

可以很方便的使用其它标签,方法

package main

import `github.com/storezhang/mengpo`

type testByTag struct {
    Addr string `test:"127.0.0.1"`
    Port int    `test:"80"`
}

func main() {
    tag := new(testByTag)
    if err := mengpo.Set(tag, mengpo.Tag(`test`)); nil != err {
        panic(err)
    }
}
配置复杂类型

可以使用json来配置复杂的类型,比如

  • map
  • slice
  • struct

json写法支持使用单引号'来替换转义字符\",这样在书写默认值json更容易

package main

import `github.com/storezhang/mengpo`

type testByJson struct {
    Orders []string `default:"['mqtts', 'mqtt', 'wss', 'ws']"`
    // 同样支持这样写
    // Orders []string `default:"[\"mqtts\", \"mqtt\", \"wss\", \"ws\"]"`
}

func main() {
    json := new(testByJson)
    if err := mengpo.Set(json); nil != err {
        panic(err)
    }
}
使用环境变量

孟婆支持使用环境变量来配置默认值

package main

import `github.com/storezhang/mengpo`

type testByEnv struct {
    Order string `default:"${Order}"`
    // 同样支持这种写法
    // Order string `default:"$Order"`
}

func main() {
    env := new(testByEnv)
    if err := mengpo.Set(env); nil != err {
        panic(err)
    }
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Set

func Set(ptr interface{}, opts ...option) (err error)

Set 设置默认值

func Settable

func Settable(ptr interface{}) bool

Settable 是否可被设置默认值

func Tag

func Tag(tag string) *optionTag

Tag 配置标签

Types

This section is empty.

Jump to

Keyboard shortcuts

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