Skip to content

lukeddy/structure

 
 

Repository files navigation

Structure GoDoc Build Status

Structure contains various utilities to work with Go (Golang) structs. It was initially used by me to convert a struct into a map[string]interface{}. With time I've added other utilities for structs. It's basically a high level package based on primitives from the reflect package. Feel free to add new functions or improve the existing code.

Install

go get github.com/fatih/structure

Usage and Examples

Lets define and declare a struct

type Server struct {
	Name    string
	ID      int32
	Enabled bool
}

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

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

// Convert the fields of a struct to a []string. 
// => ["Name", "ID", "Enabled"]
f := structure.Fields(s)

// Return the struct name
// => "Server"
n := structure.Name(s)

// Check if field name exists
// => true
h := structure.Has(s, "Enabled")

// Check if any field of a struct is initialized or not.
if structure.HasZero(s) {
    fmt.Println("s has a zero value field")
}

// Check if all fields of a struct is initialized or not.
if structure.IsZero(s) {
    fmt.Println("all fields of s is zero value")
}

// Check if it's a struct or a pointer to struct
if structure.IsStruct(s) {
    fmt.Println("s is a struct")
}

Credits

License

The MIT License (MIT) - see LICENSE.md for more details

About

Utilities for Go structs

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published