我查看了文档但无法找到此信息。
给定一个结构,是否可以实现一个方法(比如func (k Koala) String() string
),在打印结构时,fmt.Print
系列会自动使用该方法?
也许某处有界面,但我找不到它。
答案 0 :(得分:5)
是的,它被称为fmt.Stringer()
Stringer由具有String方法的任何值实现,该方法定义该值的“本机”格式。 String方法用于将作为操作数传递的值打印到任何接受字符串的格式或打印到未格式化的打印机。
type Stringer interface { String() string }
*print*
功能本身不接受Stringer()
界面,因为fmt.Println("foo")
和fmt.Println(someStringer)
同样有效。我建议您通过print.go
source code查看完全这是如何工作的,但简要介绍*print*
函数:
interface{}
; string
,int
等)并进行相应格式化(如果是); .String()
方法,如果存在则使用该方法。准确的逻辑涉及更多。如上所述,我鼓励您自己查看源代码。它只是简单易懂的Go。