我正在使用正则表达式包的编译函数,它返回正则表达式结构的指针,并在 printf 函数中传递结构显示我只显示字符串而不是整个结构。package mainimport ( "fmt" "regexp")func main() { reg, _ := regexp.Compile(`[0-9a-f]+`) fmt.Printf("%+v \n", reg)}// Output[0-9a-f]+但是当我创建自己的结构并用一些值初始化并打印它时,它会显示完整的结构。我不理解这里的概念。package mainimport ( "fmt")type Exp struct { a string b int}func main() { x := &Exp{"akash", 12} fmt.Printf("%+v \n", x)}// Output: &{akash 12}
1 回答
扬帆大鱼
TA贡献1799条经验 获得超9个赞
该regexp.Regexp
类型实现了fmt.Stringer
接口,这是fmt.Print*
方法中使用的默认动词。
这意味着它reg.String()
在您的第一个示例中格式化时调用。
在您的第二个示例中,您的自定义类型Exp
没有这样的方法,因此它使用结构的默认 Go 格式。
- 1 回答
- 0 关注
- 135 浏览
添加回答
举报
0/150
提交
取消