当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。