Go 漂亮打印与字符串转换的实用方法

Go 漂亮打印与字符串转换的实用方法,go,pretty-print,string-conversion,gofmt,Go,Pretty Print,String Conversion,Gofmt,我想简单地提供一种使用漂亮打印而不是普通类型->字符串转换记录数据的机制,这种转换不会干扰通过字符串的数据传输 我可以添加一个type.String()转换器方法,然后fmt库将自动使用该方法,而fmt库通常用于记录输出 但是,这可能会干扰其他使用类型->字符串转换并默认使用.string()机制的域(当需要“将此内容作为可扫描字符串提供给我”时,可能会使用更好的标准接口?) 编写用于数据I/O(如HTTP URI参数或数据库I/O等)的类型->字符串转换器的“正确方法”或实用方法是什么?与“打

我想简单地提供一种使用漂亮打印而不是普通类型->字符串转换记录数据的机制,这种转换不会干扰通过字符串的数据传输

我可以添加一个type.String()转换器方法,然后fmt库将自动使用该方法,而fmt库通常用于记录输出

但是,这可能会干扰其他使用类型->字符串转换并默认使用.string()机制的域(当需要“将此内容作为可扫描字符串提供给我”时,可能会使用更好的标准接口?)


编写用于数据I/O(如HTTP URI参数或数据库I/O等)的类型->字符串转换器的“正确方法”或实用方法是什么?与“打印到日志”相比?

您可以尝试实现一个
PrettyPrinter
,在这里您可以注册类型转换器,因此,特定类型可以有不同的打印机,但都会退回到
fmt.Sprint()
,这需要显式调用我希望它以漂亮的方式打印的每个地方,不是吗?e、 g.
fmt.Sptrintf(“漂亮的打印值:%s”,myThing.PrettyPrint())
no?我希望能够提供type.String(),这样我就可以说fmt.Sprintf(myThing)并将其打印出来,同时仍然为I/O提供一个单独的机制,使用更简单的strconv.Itoa(mytype)---我不清楚如何为我自己的用户类型获得这个…?如果你想要某种结构化日志,你不应该使用
fmt
,而需要另一个抽象层。然而,对于简单的事情,我使用了
GoStringer
格式进行详细的日志记录,而将
Stringer
留给任何可能在其他地方自动转换的内容。为什么不在日志中使用
json.Marshaler
或类似的格式呢?json对自定义金额类型没有多大作用。它只是一个整数,所以在编组时没有值。