golang 对结构体进行格式化输出
你看到的这个文章来自于http://www.cnblogs.com/ayanmw
可以使用
`return fmt.Sprintf("%+v", *conf) `
来打印结构体,包括结构体的key值。但是由于结构体内容较多,都在一行,所以希望可以格式化输出结构体。
其实可以接住结构体对应的默认json结构,来进行json的格式化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | 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()) } |
输出结果为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | Config: { "ServerId" : 1, "Port" : 8080, "Redis" : { "IP" : "" , "PORT" : "" , "AUTH" : 0, "PASS" : "" }, "DbConfigs" : { "maindb" : { "Host" : "127.0.0.1" , "Port" : 0, "Uid" : "" , "Pwd" : "" , "DbName" : "" } } } |
符合预期,本来想的复杂了,想要 利用reflect反射来自己做这个事情,但是默认的json反射就把这个给做了,好好好!
转载请注明出处:http://www.cnblogs.com/ayanmw 我会很高兴的!
------------------------------------------------------------------------------------------------
一定要专业!本博客定位于 ,C语言,C++语言,Java语言,Android开发和少量的Web开发,之前是做Web开发的,其实就是ASP维护,发现EasyASP这个好框架,对前端后端数据库 都很感觉亲切啊。. linux,总之后台开发多一点。以后也愿意学习 cocos2d-x 游戏客户端的开发。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2012-03-30 ArcGIS坐标系之投影及坐标的理解(xian80 和 beijing54 许多投影名称的区别)