Golang noob问题:为什么我不是使用"%+v"
标志为String()实现方法中的结构?struct String()实现导致堆栈溢出与Sprintf“+”标志
我有一个结构,我想实现漂亮打印的String()
方法。我喜欢给出的答案here,但我不喜欢输入,所以我试图修改它以返回一个字符串,其格式标记为"%+v"
。从fmt DOC:
%V的默认格式值打印时结构,加标志 (%+ V)将字段名
这工作得很好,如果我简单地叫它fmt.Printf("%+v", color)
,但如果我尝试把+
国旗在String()
执行,我得到一个堆栈溢出(我第一次有机会问一个“堆栈溢出”的问题上stackoverflow.com;))
我敢肯定,我”没有理解这里的指针引用,或者有s递归。我怀疑这个noob找到了我的第一个Golang错误,那么有人能解释一下吗?
看到去这里https://play.golang.org/p/13_qI8Iwwa
Thanks @amd。你最初的答案指出了明显的递归......但是使用新字符串('string(x)')失去了结构引用,所以仍然没有办法使用“+”标志......但是,你的解决方案在你的操场使用String()方法中的“#”标志使用Go的“语法表示”,为我提供了标签,并避免了递归。谢谢! – Merl