Golang은 구조체를 포맷하여 출력합니다
`return fmt.Sprintf("%+v", *conf) `
구조체의 키 값을 포함하여 구조체를 인쇄합니다.그러나 구조체 내 용량이 비교적 많고 한 줄에 있기 때문에 출력 구조체를 포맷할 수 있기를 바란다.
사실 구조체에 대응하는 기본 json 구조를 받아서 json 포맷을 할 수 있습니다
package main
import (
"bytes"
"encoding/json"
"fmt"
)
type RedisConfig struct {
IP string
PORT string
AUTH int
PASS string
}
type DbConfig struct {
Host string
Port int
Uid string
Pwd string
DbName string
}
//Config
type Config struct {
ServerId int
Port int //
Redis *RedisConfig
DbConfigs map[string]*DbConfig // ,
callbacks []func()
}
func (conf *Config) String() string {
b, err := json.Marshal(*conf)
if err != nil {
return fmt.Sprintf("%+v", *conf)
}
var out bytes.Buffer
err = json.Indent(&out, b, "", " ")
if err != nil {
return fmt.Sprintf("%+v", *conf)
}
return out.String()
}
func main(){
conf:=Config{
ServerId:1,
Port:8080,
Redis:&RedisConfig{},
DbConfigs: map[string]*DbConfig{
"maindb": &DbConfig{
Host:"127.0.0.1",
} ,
},
}
fmt.Println("Config:",conf.String())
}
출력 결과는 다음과 같습니다.
Config: {
"ServerId": 1,
"Port": 8080,
"Redis": {
"IP": "",
"PORT": "",
"AUTH": 0,
"PASS": ""
},
"DbConfigs": {
"maindb": {
"Host": "127.0.0.1",
"Port": 0,
"Uid": "",
"Pwd": "",
"DbName": ""
}
}
}
예상대로 복잡해졌어요. 리플렉스 반사로 이 일을 하려고 했는데 기본 json 반사로 이걸 했어요. 좋아요!
전재 대상:https://www.cnblogs.com/ayanmw/p/8677453.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.