Debugging 打印golang结构时如何忽略String()方法?
我有一个golang结构,并创建了一个Debugging 打印golang结构时如何忽略String()方法?,debugging,go,Debugging,Go,我有一个golang结构,并创建了一个String()方法,用于程序的正常操作。我现在想看看结构的全部内容。我尝试了通常的%+v格式,但它似乎使用了String()方法,而不是显示所有字段。如何输出原始结构数据 例如: 输出 good 但是我想看看没有实现String()方法会得到什么 {Jekyl:good Hyde:evil} 使用%#v格式 fmt.Printf("%#v", bar) 产出: main.Foo{Jekyl:"good", Hyde:"evil"} 参考号 为任何对
String()
方法,用于程序的正常操作。我现在想看看结构的全部内容。我尝试了通常的%+v
格式,但它似乎使用了String()
方法,而不是显示所有字段。如何输出原始结构数据
例如:
输出
good
但是我想看看没有实现String()方法会得到什么
{Jekyl:good Hyde:evil}
使用%#v
格式
fmt.Printf("%#v", bar)
产出:
main.Foo{Jekyl:"good", Hyde:"evil"}
参考号
为任何对象打印完整键值对的另一种方法如下:
package main
import (
"encoding/json"
"fmt"
)
type Foo struct {
Jekyl string
Hyde string
}
func main() {
bar := Foo{Jekyl: "good", Hyde: "evil"}
b, err := json.Marshal(bar)
if err != nil {
fmt.Println("error marshaling object")
return
}
fmt.Println("bar data : ", string(b))
}
输出:
bar data : {"Jekyl":"good","Hyde":"evil"}
转到操场参考:虽然您的答案是正确的,但通常使用另一种类型剥离结构的所有方法并使用其他方法(这通常用于编组/解编组) 如果将类型定义为
type-Foo
,则将不再使用方法Foo.String()
代码:
输出:{Jekyl:good-Hyde:evil}
bar data : {"Jekyl":"good","Hyde":"evil"}