gpt4 book ai didi

interface - 忽略 "String() string"方法打印 Go 类型

转载 作者:IT王子 更新时间:2023-10-29 00:49:42 26 4
gpt4 key购买 nike

如果我有这样的输入:

type myType ...

func (m myType) String() string { ... }

如何使用默认表示(即,而不是调用 String())打印(使用各种 fmt 函数)这种类型?我想做的是这样的:

func (m myType) String() string {
// some arbitrary property
if myType.isValid() {
// format properly
} else {
// will recurse infinitely; would like default
// representation instead
return fmt.Sprintf("invalid myType: %v", m)
}
}

最佳答案

fmt.Stringer 默认格式,当您使用 %v 时会调用它。如果您需要 Go 语法,请使用 %#v

或者,您可以完全绕过 fmt 中的反射,并按照您认为合适的方式格式化输出。

func (m myType) String() string {
return fmt.Sprintf("{Field: %s}", m.Value)
}

如果myType的底层类型是数字、字符串或其他简单类型,则在打印时转换为底层类型:

func (m mType) String() string {
return fmt.Sprint(int(m))
}

关于interface - 忽略 "String() string"方法打印 Go 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26019503/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com