golang格式化输出结构体信息

tech2026-06-09  1

GetStructureDataInfo

CodeExample

Code

func GetStructureDataInfo(itf interface{}, structName string) string { structType := reflect.TypeOf(itf) if structType.Kind() == reflect.Ptr { structType = structType.Elem() } if structType.Kind() != reflect.Struct { panic("can not use not-structure arguments" + " in function \"GetStructureDataInfo\"") } structValue := reflect.ValueOf(itf) info := fmt.Sprintf("\t%s {\n", /*Green(*/structName/*)*/) for i := 0; i < structType.NumField(); i++ { // 若想层层展开结构体,针对reflect.Struct进行递归调用 typeInfo := structType.Field(i).Name valueInfo := structValue.Field(i) info += fmt.Sprintf("\t\t%20s:\t %v\n", typeInfo, valueInfo) } info += "\t}" return info }

Example

var ServerConfig = struct { // Maximum size of single upload file MaxUploadSize int // Maximum overall request size MaxRequestBodySize int // Root directory of uploaded files UploadPath string // File Operating Port OperationPort string // File Visit port VisitPort string // Operation certificate OperationToken string // Generate a file directory index GenerateIndexPages bool } {} func TestFromatStructureDataOutput(t *testing.T) { fmt.Println(/*logUtil.*/GetStructureDataInfo(ServerConfig, "ServerConfig")) fmt.Println(GetStructureDataInfo(&ServerConfig, "ServerConfig")) } ServerConfig { MaxUploadSize: 20 MaxRequestBodySize: 30 UploadPath: upload OperationPort: 1919 VisitPort: 2020 OperationToken: nsp GenerateIndexPages: true } ServerConfig { MaxUploadSize: 20 MaxRequestBodySize: 30 UploadPath: upload OperationPort: 1919 VisitPort: 2020 OperationToken: nsp GenerateIndexPages: true }
最新回复(0)