Go实现String方法
给结构体实现String() sting
方法,方便按照我们想看的方式打印出来fmt.Println()
,类似与python的__str__
和__repr__
package main_test
import (
"fmt"
"github.com/bytedance/sonic"
"testing"
)
type A struct {
Username string `json:"username"`
Password string `json:"password"`
}
func (a A) String() string {
s, err := sonic.MarshalString(a)
if err != nil {
panic(err)
}
return s
}
func TestAbc(t *testing.T) {
a := &A{
Username: "abc",
Password: "aaa",
}
fmt.Println(a)
}
/*
{"username":"abc","password":"aaa"}
*/
当引用项为结构体,同时希望上层结构体直接继承下层结构体属性
例子
第一个结构体
type RequestCreateBlog struct {
Title string `json:"title"`
Author string `json:"author"`
Summary string `json:"summary"`
Content string `json:"content"`
Status int8 `json:"status"`
}
第二个结构体
type Blog struct {
Id int `json:"id"`
CreatedAt int64 `json:"created_at"`
UpdatedAt int64 `json:"updated_at"`
PulishedAt int64 `json:"pulished_at"`
*RequestCreateBlog
}
这里的需求是,第二个结构体直接继承第一个结构体的所有属性,这里使用了指针的方式
所要达到的序列化之后的结构体是这样的:
type Blog struct {
Id int `json:"id"`
CreatedAt int64 `json:"created_at"`
UpdatedAt int64 `json:"updated_at"`
PulishedAt int64 `json:"pulished_at"`
Title string `json:"title"`
Author string `json:"author"`
Summary string `json:"summary"`
Content string `json:"content"`
Status int8 `json:"status"`
}
//而不是这样的
type Blog struct {
Id int `json:"id"`
CreatedAt int64 `json:"created_at"`
UpdatedAt int64 `json:"updated_at"`
PulishedAt int64 `json:"pulished_at"`
RequestCreateBlog *RequestCreateBlog
}
这个时候需要实现的方法就不再是给第一个结构体实现String()
这里就是实现Blog结构体的String()
方法
func (b *Blog) String() string {
b1, err := sonic.Marshal(b)
if err != nil {
painc(err.Error())
}
return string(b1)
}
本文来自博客园,作者:厚礼蝎,转载请注明原文链接:https://www.cnblogs.com/guangdelw/p/17034049.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具