structs

package module
v0.0.4 Latest Latest
Warning

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

Go to latest
Published: Feb 18, 2022 License: MIT Imports: 6 Imported by: 0

README

structs

Go library for encoding native Go structures into generic map values.

GoDoc Go.Dev reference Tests Go Report Card Licence Tag

Installation

Use go get.

    go get -u github.com/things-go/structs

Then import the structs package into your own code.

    import "github.com/things-go/structs"
Usage && Example
API

Just like the standard lib strings, bytes and co packages, structs has many global functions to manipulate or organize your struct data. Lets define and declare a struct:

type Server struct {
    Name        string `json:"name,omitempty"`
    ID          int
    Enabled     bool
    users       []string // not exported
    http.Server          // embedded
}

server := &Server{
    Name:    "gopher",
    ID:      123456,
    Enabled: true,
}

Here is an example:

// Convert a struct to a map[string]interface{}
// => {"Name":"gopher", "ID":123456, "Enabled":true}
m := structs.Map(server)

// Convert the values of a struct to a []interface{}
// => ["gopher", 123456, true]
v := structs.Values(server)

// Convert the names of a struct to a []string
// (see "Names methods" for more info about fields)
n := structs.Names(server)

// Convert the values of a struct to a []*Field
// (see "Field methods" for more info about fields)
f := structs.Fields(server)

// Return the struct name => "Server"
n := structs.Name(server)

// Check if any field of a struct is initialized or not.
h := structs.HasZero(server)

// Check if all fields of a struct is initialized or not.
z := structs.IsZero(server)

// Check if server is a struct or a pointer to struct
i := structs.IsStruct(server)

Only public fields will be processed. So fields starting with lowercase will be ignored.

Name Tags
type AA struct {
    Id        int64    `map:"id"`
    Name      string   `map:"name"`
}

We can give the field a tag to specify another name to be used as the key.

Ignore Field
type AA struct {
    Ignore string `map:"-"`
}

If we give the special tag "-" to a field, it will be ignored.

Omit Empty
type AA struct {
    Desc        string    `map:"desc,omitempty"`
}

If tag option is "omitempty", this field will not appear in the map if the value is empty. Empty values are 0, false, "", nil, empty array and empty map.

Omit Nested
type AA struct {
    // Field is not processed further by this package.
    Field *http.Request `map:",omitnested"`
}

A value with the option of "omitnested" stops iterating further if the type is a struct. it do not converted value if a value are no exported fields, ie: time.Time

To String
type AA struct {
    Id        int64    `map:"id,string"`
    Price     float32  `map:"price,string"`
}

If tag option is "string", this field will be converted to string type. Encode will put the original value to the map if the conversion is failed.

References

License

This project is under MIT License. See the LICENSE file for the full license text.

Documentation

Overview

Package structs contains various utilities functions to work with structs.

Index

Examples

Constants

View Source
const DefaultTagName = "map" // struct's field default tag name

DefaultTagName is the default tag name for struct fields which provides a more granular to tweak certain structs. Lookup the necessary functions for more info.

Variables

This section is empty.

Functions

func FillMap

func FillMap(s interface{}, out map[string]interface{})

FillMap is the same as Map. Instead of returning the output, it fills the given map.

func FillMapWithTag added in v0.0.2

func FillMapWithTag(s interface{}, out map[string]interface{}, tagName string)

FillMapWithTag is the same as MapTag(). Instead of returning the output, it fills the given map.

func HasZero

func HasZero(s interface{}) bool

HasZero returns true if any field is equal to a zero value. For more info refer to Struct types HasZero() method. It panics if s's kind is not struct.

Example
// Let's define an Access struct. Note that the "Enabled" field is not
// going to be checked because we added the "map" tag to the field.
type Access struct {
	Name         string
	LastAccessed time.Time
	Number       int
	Enabled      bool `map:"-"`
}

// Name and Number is not initialized.
a := &Access{
	LastAccessed: time.Now(),
}
hasZeroA := HasZero(a)

// Name and Number is initialized.
b := &Access{
	Name:         "Fatih",
	LastAccessed: time.Now(),
	Number:       12345,
}
hasZeroB := HasZero(b)

fmt.Printf("%#v\n", hasZeroA)
fmt.Printf("%#v\n", hasZeroB)
Output:

true
false

func HasZeroWithTag added in v0.0.2

func HasZeroWithTag(s interface{}, tagName string) bool

HasZeroWithTag is the same as HasZero() but with tagName.

func Int16Slice added in v0.0.4

func Int16Slice(s interface{}) []int16

Int16Slice returns a slice of int16. For more info refer to Slice types Int16Slice() method.

func Int32Slice added in v0.0.4

func Int32Slice(s interface{}) []int32

Int32Slice returns a slice of int32. For more info refer to Slice types Int32Slice() method.

func Int64Slice added in v0.0.4

func Int64Slice(s interface{}) []int64

Int64Slice returns a slice of int64. For more info refer to Slice types Int64Slice() method.

func Int8Slice added in v0.0.4

func Int8Slice(s interface{}) []int8

Int8Slice returns a slice of int8. For more info refer to Slice types Int8Slice() method.

func IntSlice added in v0.0.4

func IntSlice(s interface{}) []int

IntSlice returns a slice of int. For more info refer to Slice types IntSlice() method.

func IsStruct

func IsStruct(s interface{}) bool

IsStruct returns true if the given variable is a struct or a pointer to struct.

func IsZero

func IsZero(s interface{}) bool

IsZero returns true if all fields is equal to a zero value. For more info refer to Struct types IsZero() method. It panics if s's kind is not struct.

Example
type Server struct {
	Name    string
	ID      int32
	Enabled bool
}

// Nothing is initialized
a := &Server{}
isZeroA := IsZero(a)

// Name and Enabled is initialized, but not ID
b := &Server{
	Name:    "Golang",
	Enabled: true,
}
isZeroB := IsZero(b)

fmt.Printf("%#v\n", isZeroA)
fmt.Printf("%#v\n", isZeroB)
Output:

true
false

func IsZeroWithTag added in v0.0.2

func IsZeroWithTag(s interface{}, tagName string) bool

IsZeroWithTag is the same as IsZero() but with tagName.

func Map

func Map(s interface{}) map[string]interface{}

Map converts the given struct to a map[string]interface{}. For more info refer to Struct types Map() method. It panics if s's kind is not struct.

Example
type Server struct {
	Name    string
	ID      int32
	Enabled bool
}

s := &Server{
	Name:    "Arslan",
	ID:      123456,
	Enabled: true,
}

m := Map(s)

fmt.Printf("%#v\n", m["Name"])
fmt.Printf("%#v\n", m["ID"])
fmt.Printf("%#v\n", m["Enabled"])
Output:

"Arslan"
123456
true
Example (OmitEmpty)
// By default field with struct types of zero values are processed too. We
// can stop processing them via "omitempty" tag option.
type Server struct {
	Name     string `map:",omitempty"`
	ID       int32  `map:"server_id,omitempty"`
	Location string
}

// Only add location
s := &Server{
	Location: "Tokyo",
}

m := Map(s)

// map contains only the Location field
fmt.Printf("%v\n", m)
Output:

map[Location:Tokyo]
Example (OmitNested)
// By default field with struct types are processed too. We can stop
// processing them via "omitnested" tag option.
type Server struct {
	Name string    `map:"server_name"`
	ID   int32     `map:"server_id"`
	Time time.Time `map:"time,omitnested"` // do not convert to map[string]interface{}
}

t, _ := time.Parse("2006-Jan-02", "2013-Feb-03")

s := &Server{
	Name: "Zeynep",
	ID:   789012,
	Time: t,
}

m := Map(s)

// access them by the custom tags defined above
fmt.Printf("%v\n", m["server_name"])
fmt.Printf("%v\n", m["server_id"])
fmt.Printf("%v\n", m["time"].(time.Time))
Output:

Zeynep
789012
2013-02-03 00:00:00 +0000 UTC
Example (Tags)
// Custom tags can change the map keys instead of using the fields name
type Server struct {
	Name    string `map:"server_name"`
	ID      int32  `map:"server_id"`
	Enabled bool   `map:"enabled"`
}

s := &Server{
	Name: "Zeynep",
	ID:   789012,
}

m := Map(s)

// access them by the custom tags defined above
fmt.Printf("%#v\n", m["server_name"])
fmt.Printf("%#v\n", m["server_id"])
fmt.Printf("%#v\n", m["enabled"])
Output:

"Zeynep"
789012
false

func MapSlice added in v0.0.3

func MapSlice(s interface{}) []map[string]interface{}

MapSlice converts the given struct slice to a []map[string]interface{}. For more info refer to MapSliceWithTag() method

func MapSliceWithTag added in v0.0.3

func MapSliceWithTag(s interface{}, tagName string) []map[string]interface{}

MapSliceWithTag converts the given struct slice to a []map[string]interface{} with tagName. It returns empty []map[string]interface{} if s is not a slice struct.

func MapWithTag added in v0.0.2

func MapWithTag(s interface{}, tagName string) map[string]interface{}

MapWithTag same as Map() but with tagName. It panics if s's kind is not struct.

func Name

func Name(s interface{}) string

Name returns the map's type name within its package. It returns an empty string for unnamed types. It panics if s's kind is not struct.

func Names

func Names(s interface{}) []string

Names returns a slice of field names. For more info refer to Struct types Names() method. It panics if s's kind is not struct.

func NamesWithTag added in v0.0.2

func NamesWithTag(s interface{}, tagName string) []string

NamesWithTag is the same as Names() but with tagName.

func StringSlice added in v0.0.4

func StringSlice(s interface{}) []string

StringSlice returns a slice of uint64. For more info refer to Slice types StringSlice() method.

func StructStringSlice added in v0.0.4

func StructStringSlice(s interface{}, fieldName string) []string

StructStringSlice returns a slice of int64. For more info refer to Slice types StructStringSlice() method.

func StructsInt64Slice added in v0.0.4

func StructsInt64Slice(s interface{}, fieldName string) []int64

StructsInt64Slice returns a slice of int64. For more info refer to Slice types StructInt64Slice() method.

func StructsIntSlice added in v0.0.4

func StructsIntSlice(s interface{}, fieldName string) []int

StructsIntSlice returns a slice of int. For more info refer to Slice types StructIntSlice() method.

func StructsUint64Slice added in v0.0.4

func StructsUint64Slice(s interface{}, fieldName string) []uint64

StructsUint64Slice returns a slice of int64. For more info refer to Slice types StructUint64Slice() method.

func StructsUintSlice added in v0.0.4

func StructsUintSlice(s interface{}, fieldName string) []uint

StructsUintSlice returns a slice of int. For more info refer to Slice types v() method.

func Uint16Slice added in v0.0.4

func Uint16Slice(s interface{}) []uint16

Uint16Slice returns a slice of uint16. For more info refer to Slice types Uint16Slice() method.

func Uint32Slice added in v0.0.4

func Uint32Slice(s interface{}) []uint32

Uint32Slice returns a slice of uint32. For more info refer to Slice types Uint32Slice() method.

func Uint64Slice added in v0.0.4

func Uint64Slice(s interface{}) []uint64

Uint64Slice returns a slice of uint64. For more info refer to Slice types Uint64Slice() method.

func Uint8Slice added in v0.0.4

func Uint8Slice(s interface{}) []uint8

Uint8Slice returns a slice of uint8. For more info refer to Slice types Uint8Slice() method.

func UintSlice added in v0.0.4

func UintSlice(s interface{}) []uint

UintSlice returns a slice of uint. For more info refer to Slice types UintSlice() method.

func Values

func Values(s interface{}) []interface{}

Values converts the given s struct's exported field values to a []interface{}. For more info refer to Struct types Values() method. It panics if s's kind is not struct.

Example
type Server struct {
	Name    string
	ID      int32
	Enabled bool
}

s := &Server{
	Name:    "Fatih",
	ID:      135790,
	Enabled: false,
}

m := Values(s)

fmt.Printf("Values: %+v\n", m)
Output:

Values: [Fatih 135790 false]
Example (OmitEmpty)
// By default field with struct types of zero values are processed too. We
// can stop processing them via "omitempty" tag option.
type Server struct {
	Name     string `map:",omitempty"`
	ID       int32  `map:"server_id,omitempty"`
	Location string
}

// Only add location
s := &Server{
	Location: "Ankara",
}

m := Values(s)

// values contains only the Location field
fmt.Printf("Values: %+v\n", m)
Output:

Values: [Ankara]
Example (Tags)
type Location struct {
	City    string
	Country string
}

type Server struct {
	Name     string
	ID       int32
	Enabled  bool
	Location Location `map:"-"` // values from location are not included anymore
}

s := &Server{
	Name:     "Fatih",
	ID:       135790,
	Enabled:  false,
	Location: Location{City: "Ankara", Country: "Turkey"},
}

// Let get all values from the struct s. Note that we don't include values
// from the Location field
m := Values(s)

fmt.Printf("Values: %+v\n", m)
Output:

Values: [Fatih 135790 false]

func ValuesWithTag added in v0.0.2

func ValuesWithTag(s interface{}, tagName string) []interface{}

ValuesWithTag is the same as Values() but with tagName.

Types

type Field

type Field struct {
	// contains filtered or unexported fields
}

Field represents a single struct field that encapsulates high level functions around the field.

Example
type Person struct {
	Name   string
	Number int
}

type Access struct {
	Person        Person
	HasPermission bool
	LastAccessed  time.Time
}

access := &Access{
	Person:        Person{Name: "fatih", Number: 1234567},
	LastAccessed:  time.Now(),
	HasPermission: true,
}

// Create a new Struct type
s := New(access)

// Get the MustField type for "Person" field
p := s.MustField("Person")

// Get the underlying "Name field" and print the value of it
name := p.MustField("Name")

fmt.Printf("Value of Person.Access.Name: %+v\n", name.Value())
Output:

Value of Person.Access.Name: fatih

func Fields

func Fields(s interface{}) []*Field

Fields returns a slice of *Field. For more info refer to Struct types Fields() method. It panics if s's kind is not struct.

Example
type Access struct {
	Name         string
	LastAccessed time.Time
	Number       int
}

s := &Access{
	Name:         "Fatih",
	LastAccessed: time.Now(),
	Number:       1234567,
}

fields := Fields(s)

for i, field := range fields {
	fmt.Printf("[%d] %+v\n", i, field.Name())
}
Output:

[0] Name
[1] LastAccessed
[2] Number
Example (Nested)
type Person struct {
	Name   string
	Number int
}

type Access struct {
	Person        Person
	HasPermission bool
	LastAccessed  time.Time
}

s := &Access{
	Person:        Person{Name: "fatih", Number: 1234567},
	LastAccessed:  time.Now(),
	HasPermission: true,
}

// Let's get all fields from the struct s.
fields := Fields(s)

for _, field := range fields {
	if field.Name() == "Person" {
		fmt.Printf("Access.Person.Name: %+v\n", field.MustField("Name").Value())
	}
}
Output:

Access.Person.Name: fatih

func FieldsWithTag added in v0.0.2

func FieldsWithTag(s interface{}, tagName string) []*Field

FieldsWithTag is the same as Fields() but with tagName.

func (*Field) CanInterface

func (f *Field) CanInterface() bool

CanInterface reports whether Interface can be used without panicking.

func (*Field) CanSet

func (f *Field) CanSet() bool

CanSet reports whether the value of v can be changed.

func (*Field) Field

func (f *Field) Field(name string) (*Field, bool)

Field returns the field from a nested struct. The boolean returns whether the field was found (true) or not (false).

func (*Field) Fields

func (f *Field) Fields() []*Field

Fields returns a slice of Fields. This is particular handy to get the fields of a nested struct . A struct tag with the content of "-" ignores the checking of that particular field. Example:

// Field is ignored by this package.
Field *http.Request `structs:"-"`

It panics if field is not exported or if field's kind is not struct

func (*Field) IsAnonymous

func (f *Field) IsAnonymous() bool

IsAnonymous returns true if the given field is an anonymous field (embedded)

func (*Field) IsExported

func (f *Field) IsExported() bool

IsExported returns true if the given field is exported.

func (*Field) IsZero

func (f *Field) IsZero() bool

IsZero returns true if the given field is not initialized (has a zero value). It panics if the field is not exported.

func (*Field) Kind

func (f *Field) Kind() reflect.Kind

Kind returns the fields kind, such as "string", "map", "bool", etc ..

func (*Field) MustField

func (f *Field) MustField(name string) *Field

Field returns the field from a nested struct. It panics if the nested struct is not exported or if the field was not found.

func (*Field) Name

func (f *Field) Name() string

Name returns the name of the given field

func (*Field) Set

func (f *Field) Set(val interface{}) error

Set sets the field to given value v. It returns an error if the field is not settable (not addressable or not exported) or if the given value's type doesn't match the fields type.

func (*Field) SetZero

func (f *Field) SetZero() error

SetZero sets the field to its zero value. It returns an error if the field is not settable (not addressable or not exported).

func (*Field) Tag

func (f *Field) Tag(key string) string

Tag returns the value associated with key in the tag string. If there is no such key in the tag, Tag returns the empty string.

func (*Field) Value

func (f *Field) Value() interface{}

Value returns the underlying value of the field. It panics if the field is not exported.

type Struct

type Struct struct {
	// contains filtered or unexported fields
}

Struct encapsulates a struct type to provide several high level functions around the struct.

func New

func New(s interface{}) *Struct

New returns a new *Struct with the struct s. It panics if the s's kind is not struct.

Example
type Server struct {
	Name    string
	ID      int32
	Enabled bool
}

server := &Server{
	Name:    "Arslan",
	ID:      123456,
	Enabled: true,
}

s := New(server)

fmt.Printf("Name        : %v\n", s.Name())
fmt.Printf("Values      : %v\n", s.Values())
fmt.Printf("Value of ID : %v\n", s.MustField("ID").Value())
Output:

Name        : Server
Values      : [Arslan 123456 true]
Value of ID : 123456

func (*Struct) Field

func (s *Struct) Field(name string) (*Field, bool)

Field returns a new Field struct that provides several high level functions around a single struct field entity. The boolean returns true if the field was found.

func (*Struct) Fields

func (s *Struct) Fields() []*Field

Fields returns a slice of Fields. A struct tag with the content of "-" ignores the checking of that particular field. Example:

// Field is ignored by this package.
Field bool `map:"-"`

It panics if s's kind is not struct.

func (*Struct) FillMap

func (s *Struct) FillMap(out map[string]interface{})

FillMap is the same as Map. Instead of returning the output, it fills the given map.

func (*Struct) HasZero

func (s *Struct) HasZero() bool

HasZero returns true if a field in a struct is not initialized (zero value). A struct tag with the content of "-" ignores the checking of that particular field. Example:

// Field is ignored by this package.
Field bool `map:"-"`

A value with the option of "omitnested" stops iterating further if the type is a struct. Example:

// Field is not processed further by this package.
Field time.Time     `map:"myName,omitnested"`
Field *http.Request `map:",omitnested"`

Note that only exported fields of a struct can be accessed, non exported fields will be neglected. It panics if s's kind is not struct.

func (*Struct) IsZero

func (s *Struct) IsZero() bool

IsZero returns true if all fields in a struct is a zero value (not initialized) A struct tag with the content of "-" ignores the checking of that particular field. Example:

// Field is ignored by this package.
Field bool `map:"-"`

A value with the option of "omitnested" stops iterating further if the type is a struct. Example:

// Field is not processed further by this package.
Field time.Time     `map:"myName,omitnested"`
Field *http.Request `map:",omitnested"`

Note that only exported fields of a struct can be accessed, non exported fields will be neglected. It panics if s's kind is not struct.

func (*Struct) Map

func (s *Struct) Map() map[string]interface{}

Map converts the given struct to a map[string]interface{}, where the keys of the map are the field names and the values of the map the associated values of the fields. The default key string is the struct field name but can be changed in the struct field's tag value. The "structs" key in the struct's field tag value is the key name. Example:

// Field appears in map as key "myName".
Name string `map:"myName"`

A tag value with the content of "-" ignores that particular field. Example:

// Field is ignored by this package.
Field bool `map:"-"`

A tag value with the content of "string" uses the stringer to get the value. Example:

// The value will be output of Animal's String() func.
// Map will panic if Animal does not implement String().
Field *Animal `map:"field,string"`

A tag value with the option of "flatten" used in a struct field is to flatten its fields in the output map. Example:

// The FieldStruct's fields will be flattened into the output map.
FieldStruct time.Time `structs:",flatten"`

A tag value with the option of "omitnested" stops iterating further if the type is a struct. Example:

// Field is not processed further by this package.
Field time.Time     `map:"myName,omitnested"`
Field *http.Request `map:",omitnested"`

A tag value with the option of "omitempty" ignores that particular field if the field value is empty. Example:

// Field appears in map as key "myName", but the field is
// skipped if empty.
Field string `map:"myName,omitempty"`

// Field appears in map as key "MustField" (the default), but
// the field is skipped if empty.
Field string `map:",omitempty"`

Note that only exported fields of a struct can be accessed, non exported fields will be neglected.

func (*Struct) MustField

func (s *Struct) MustField(name string) *Field

MustField returns a new Field struct that provides several high level functions around a single struct field entity. It panics if the field is not found.

func (*Struct) Name

func (s *Struct) Name() string

Name returns the map's type name within its package. For more info refer to Name() function.

func (*Struct) Names

func (s *Struct) Names() []string

Names returns a slice of field names. A struct tag with the content of "-" ignores the checking of that particular field. Example:

// Field is ignored by this package.
Field bool `map:"-"`

It panics if s's kind is not struct.

func (*Struct) SetTagName

func (s *Struct) SetTagName(tagName string) *Struct

SetTagName set struct's field tag name, default is DefaultTagName.

func (*Struct) Values

func (s *Struct) Values() []interface{}

Values converts the given s struct's exported field values to a []interface{}. A struct tag with the content of "-" ignores the that particular field. Example:

// Field is ignored by this package.
Field int `map:"-"`

A value with the option of "omitnested" stops iterating further if the type is a struct. Example:

// Fields is not processed further by this package.
Field time.Time     `map:",omitnested"`
Field *http.Request `map:",omitnested"`

A tag value with the option of "omitempty" ignores that particular field and is not added to the values if the field value is empty. Example:

// Field is skipped if empty
Field string `map:",omitempty"`

Note that only exported fields of a struct can be accessed, non exported fields will be neglected.

type StructSlice added in v0.0.4

type StructSlice struct {
	// contains filtered or unexported fields
}

StructSlice hold a struct slice reflect.value

func NewStructSlice added in v0.0.4

func NewStructSlice(s interface{}) *StructSlice

NewStructSlice returns a new *Slice with the slice s. It panics if the s's kind is not slice.

func (*StructSlice) Int16Slice added in v0.0.4

func (s *StructSlice) Int16Slice() []int16

Int16Slice extracts the given s slice's every element, which is integer or float, to []int16 by the field. It panics if the s's element is not integer or float, or field is not invalid.

func (*StructSlice) Int32Slice added in v0.0.4

func (s *StructSlice) Int32Slice() []int32

Int32Slice extracts the given s slice's every element, which is integer or float, to []int32 by the field. It panics if the s's element is not integer or float, or field is not invalid.

func (*StructSlice) Int64Slice added in v0.0.4

func (s *StructSlice) Int64Slice() []int64

Int64Slice extracts the given s slice's every element, which is integer or float, to []int64 by the field. It panics if the s's element is not integer or float, or field is not invalid.

func (*StructSlice) Int8Slice added in v0.0.4

func (s *StructSlice) Int8Slice() []int8

Int8Slice extracts the given s slice's every element, which is integer or float, to []int8 by the field. It panics if the s's element is not integer or float, or field is not invalid.

func (*StructSlice) IntSlice added in v0.0.4

func (s *StructSlice) IntSlice() []int

IntSlice extracts the given s slice's every element, which is integer or float, to []int by the field. It panics if the s's element is not integer or float, or field is not invalid.

func (*StructSlice) Name added in v0.0.4

func (s *StructSlice) Name() string

Name returns the slice's type name within its package. For more info refer to Name() function.

func (*StructSlice) StringSlice added in v0.0.4

func (s *StructSlice) StringSlice() []string

StringSlice extracts the given s slice's every element, which is integer or float or string, to []string by the field. It panics if the s's element is not integer or float, string, or field is not invalid.

func (*StructSlice) StructInt64Slice added in v0.0.4

func (s *StructSlice) StructInt64Slice(fieldName string) []int64

StructInt64Slice extracts the given s slice's every element, which is struct, to []int64 by the field. It panics if the s's element is not struct, or field is not exits, or the value of field is not integer.

func (*StructSlice) StructIntSlice added in v0.0.4

func (s *StructSlice) StructIntSlice(fieldName string) []int

StructIntSlice extracts the given s slice's every element, which is struct, to []int by the field. It panics if the s's element is not struct, or field is not exits, or the value of field is not integer.

func (*StructSlice) StructStringSlice added in v0.0.4

func (s *StructSlice) StructStringSlice(fieldName string) []string

StructStringSlice extracts the given s slice's every element, which is struct, to []string by the field. It panics if the s's element is not struct, or field is not exits, or the value of field is not integer or string.

func (*StructSlice) StructUint64Slice added in v0.0.4

func (s *StructSlice) StructUint64Slice(fieldName string) []uint64

StructUint64Slice extracts the given s slice's every element, which is struct, to []int64 by the field. It panics if the s's element is not struct, or field is not exits, or the value of field is not integer.

func (*StructSlice) StructUintSlice added in v0.0.4

func (s *StructSlice) StructUintSlice(fieldName string) []uint

StructUintSlice extracts the given s slice's every element, which is struct, to []uint by the field. It panics if the s's element is not struct, or field is not exits, or the value of field is not integer.

func (*StructSlice) Uint16Slice added in v0.0.4

func (s *StructSlice) Uint16Slice() []uint16

Uint16Slice extracts the given s slice's every element, which is integer or float, to []uint16 by the field. It panics if the s's element is not integer or float, or field is not invalid.

func (*StructSlice) Uint32Slice added in v0.0.4

func (s *StructSlice) Uint32Slice() []uint32

Uint32Slice extracts the given s slice's every element, which is integer or float, to []uint32 by the field. It panics if the s's element is not integer or float, or field is not invalid.

func (*StructSlice) Uint64Slice added in v0.0.4

func (s *StructSlice) Uint64Slice() []uint64

Uint64Slice extracts the given s slice's every element, which is integer or float, to []uint64 by the field. It panics if the s's element is not integer or float, or field is not invalid.

func (*StructSlice) Uint8Slice added in v0.0.4

func (s *StructSlice) Uint8Slice() []uint8

Uint8Slice extracts the given s slice's every element, which is integer or float, to []uint8 by the field. It panics if the s's element is not integer or float, or field is not invalid.

func (*StructSlice) UintSlice added in v0.0.4

func (s *StructSlice) UintSlice() []uint

UintSlice extracts the given s slice's every element, which is integer or float, to []uint by the field. It panics if the s's element is not integer or float, or field is not invalid.

Jump to

Keyboard shortcuts

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