如何使用 Field String() 方法打印结构
fmt.Println() 打印结构的本机表示,因为它们没有实现默认情况下为 String() 接口。为每个结构实现 String() 可能很乏味,并且在添加或删除字段时需要更新。
用于自定义打印的帮助函数
要解决此限制,您可以利用利用反射(reflect 包)的辅助函数:
func PrintStruct(s interface{}, names bool) string { // ... // (function body as provided in the answer) }
此函数迭代结构体字段并检索 String() 值(如果适用):
fmt.Println(PrintStruct(a, true))
结构特定的 String() 方法
或者,您可以为结构定义一个 String() 方法,调用 PrintStruct() 函数:
func (a A) String() string { return PrintStruct(a, true) }
此方法处理结构体字段中的动态变化,无需对 String() 方法的修改。
用法
使用辅助函数或特定于结构体的 String() 方法,您可以方便地打印结构体及其字段 String( ) 值:
// using the PrintStruct() function fmt.Println(PrintStruct(a, true)) // using the custom String() method (if defined) fmt.Println(a)
以上是如何使用 String() 方法有效打印包含字段的 Go 结构体?的详细内容。更多信息请关注PHP中文网其他相关文章!