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", structName
)
for i
:= 0; i
< structType
.NumField(); i
++ {
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 {
MaxUploadSize
int
MaxRequestBodySize
int
UploadPath
string
OperationPort
string
VisitPort
string
OperationToken
string
GenerateIndexPages
bool
} {}
func TestFromatStructureDataOutput(t
*testing
.T
) {
fmt
.Println(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
}