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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM