golang格式化输出结构体信息

GetStructureDataInfo

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
	}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值