當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


GO StructOf用法及代碼示例

GO語言"reflect"包中"StructOf"函數的用法及代碼示例。

用法:

func StructOf(fields []StructField) Type

StructOf 返回包含字段的結構類型。 Offset 和 Index 字段將被編譯器忽略和計算。

StructOf 當前不會為嵌入字段生成包裝方法,如果未導出傳遞,則會出現Panics StructFields 這些限製可能會在未來版本中取消。

例子:

package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"reflect"
)

func main() {
	typ := reflect.StructOf([]reflect.StructField{
		{
			Name: "Height",
			Type: reflect.TypeOf(float64(0)),
			Tag:  `json:"height"`,
		},
		{
			Name: "Age",
			Type: reflect.TypeOf(int(0)),
			Tag:  `json:"age"`,
		},
	})

	v := reflect.New(typ).Elem()
	v.Field(0).SetFloat(0.4)
	v.Field(1).SetInt(2)
	s := v.Addr().Interface()

	w := new(bytes.Buffer)
	if err := json.NewEncoder(w).Encode(s); err != nil {
		panic(err)
	}

	fmt.Printf("value: %+v\n", s)
	fmt.Printf("json:  %s", w.Bytes())

	r := bytes.NewReader([]byte(`{"height":1.5,"age":10}`))
	if err := json.NewDecoder(r).Decode(s); err != nil {
		panic(err)
	}
	fmt.Printf("value: %+v\n", s)

}

輸出:

value: &{Height:0.4 Age:2}
json:  {"height":0.4,"age":2}
value: &{Height:1.5 Age:10}

相關用法


注:本文由純淨天空篩選整理自golang.google.cn大神的英文原創作品 StructOf。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。