Golang通过反射拼接一个结构体所有字段

golang通过反射拼接一个结构体所有字段

需求

  • 将一个结构体所有字段以"|"连接拼接成字符串

golang 不同类型拼接成string使用Sprintf比较麻烦,如果一个结构体有上百个字段,一个一个拼接有点要人命,可以通过反射修改所有字段为string再拼接起来.

实现demo

package main

import (
	"fmt"
	"reflect"
	"strings"
)

type Student struct {
	Name  string `json:"name"`
	Age   int    `json:"age"`
	Grade int    `json:"grade"`
}

func main ()  {                                                                                                                                                                                              
	student := Student{
		Name:  "json",
		Age:   18,
		Grade: 9,
	}
	t := reflect.TypeOf( student)
	if t.Kind() != reflect.Struct {
		fmt.Println("Check type error not Struct")
		return
	}

	v := reflect.ValueOf(student)
	str := ""
	for i := 0; i < t.NumField(); i++ {
		value := v.Field(i).Interface()
		str += fmt.Sprintf("%v", value)
		str += "|"
	}
	if strings.HasSuffix(str,"|") {
		str = str[0 : len(str)-1]
	}
	fmt.Println(str)
}


输出结果

json|18|9
posted @ 2020-03-25 17:26  Kingram  阅读(1780)  评论(0编辑  收藏  举报