summaryrefslogtreecommitdiffstats
path: root/dependencies/pkg/mod/github.com/creasty/defaults@v1.6.0/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'dependencies/pkg/mod/github.com/creasty/defaults@v1.6.0/README.md')
-rw-r--r--dependencies/pkg/mod/github.com/creasty/defaults@v1.6.0/README.md73
1 files changed, 73 insertions, 0 deletions
diff --git a/dependencies/pkg/mod/github.com/creasty/defaults@v1.6.0/README.md b/dependencies/pkg/mod/github.com/creasty/defaults@v1.6.0/README.md
new file mode 100644
index 0000000..de1ca3d
--- /dev/null
+++ b/dependencies/pkg/mod/github.com/creasty/defaults@v1.6.0/README.md
@@ -0,0 +1,73 @@
+defaults
+========
+
+[![CircleCI](https://circleci.com/gh/creasty/defaults/tree/master.svg?style=svg)](https://circleci.com/gh/creasty/defaults/tree/master)
+[![codecov](https://codecov.io/gh/creasty/defaults/branch/master/graph/badge.svg)](https://codecov.io/gh/creasty/defaults)
+[![GitHub release](https://img.shields.io/github/release/creasty/defaults.svg)](https://github.com/creasty/defaults/releases)
+[![License](https://img.shields.io/github/license/creasty/defaults.svg)](./LICENSE)
+
+Initialize structs with default values
+
+- Supports almost all kind of types
+ - Scalar types
+ - `int/8/16/32/64`, `uint/8/16/32/64`, `float32/64`
+ - `uintptr`, `bool`, `string`
+ - Complex types
+ - `map`, `slice`, `struct`
+ - Aliased types
+ - `time.Duration`
+ - e.g., `type Enum string`
+ - Pointer types
+ - e.g., `*SampleStruct`, `*int`
+- Recursively initializes fields in a struct
+- Dynamically sets default values by [`defaults.Setter`](./setter.go) interface
+- Preserves non-initial values from being reset with a default value
+
+
+Usage
+-----
+
+```go
+type Gender string
+
+type Sample struct {
+ Name string `default:"John Smith"`
+ Age int `default:"27"`
+ Gender Gender `default:"m"`
+
+ Slice []string `default:"[]"`
+ SliceByJSON []int `default:"[1, 2, 3]"` // Supports JSON
+
+ Map map[string]int `default:"{}"`
+ MapByJSON map[string]int `default:"{\"foo\": 123}"`
+ MapOfStruct map[string]OtherStruct
+ MapOfPtrStruct map[string]*OtherStruct
+ MapOfStructWithTag map[string]OtherStruct `default:"{\"Key1\": {\"Foo\":123}}"`
+
+ Struct OtherStruct `default:"{}"`
+ StructPtr *OtherStruct `default:"{\"Foo\": 123}"`
+
+ NoTag OtherStruct // Recurses into a nested struct by default
+ OptOut OtherStruct `default:"-"` // Opt-out
+}
+
+type OtherStruct struct {
+ Hello string `default:"world"` // Tags in a nested struct also work
+ Foo int `default:"-"`
+ Random int `default:"-"`
+}
+
+// SetDefaults implements defaults.Setter interface
+func (s *OtherStruct) SetDefaults() {
+ if defaults.CanUpdate(s.Random) { // Check if it's a zero value (recommended)
+ s.Random = rand.Int() // Set a dynamic value
+ }
+}
+```
+
+```go
+obj := &Sample{}
+if err := defaults.Set(obj); err != nil {
+ panic(err)
+}
+```