Debugging 打印golang结构时如何忽略String()方法?

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"} 参考号 为任何对

我有一个golang结构,并创建了一个
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"}