Skip to content

Latest commit

 

History

History
61 lines (50 loc) · 1003 Bytes

struct.md

File metadata and controls

61 lines (50 loc) · 1003 Bytes

Struct

Anonymous Struct

monica := struct {
		firstName, lastName string
		salary              int
		fullTime            bool
	}{
		firstName: "Monica",
		lastName:  "Geller",
		salary:    1200,
	}
	
	fmt.Println(monica)

Anonymous Field

type Data struct {
	test string
	int
	bool
}

func main() {
	sample1 := Data{"Monday", 1200, true}
	sample1.bool = false
	
	fmt.Println(sample1.test, sample1.int, sample1.bool) // note that sample1.string will raise error
}

Tags are formatted as concatenation of key:"value" pairs.

(Un)marshaling;

import (
    "encoding/json"
    "fmt"
)
func main() {
    type T struct {
       F1 int `json:"f_1"`
       F2 int `json:"f_2,omitempty"`
       F3 int `json:"f_3,omitempty"`
       F4 int `json:"-"`
    }
    t := T{1, 0, 2, 3}
    b, err := json.Marshal(t)
    if err != nil {
        panic(err)
    }
    fmt.Printf("%s\n", b) // {"f_1":1,"f_3":2}
}