我通过包 json 解析和存储 JSON 数据,并使用 func Unmarshal 来获得我想要的输出。不幸的是,我得到的输出是:&{6}我只想要6.这是我的一些代码:type AutoGenerated struct { Total int `json:"total"`}func getStations(body []byte) (*AutoGenerated, error) { var s = new(AutoGenerated) err := json.Unmarshal(body, &s) if(err != nil){ fmt.Println("whoops:", err) } return s, err}func main() { s, err := getStations([]byte(body)) fmt.Printf("%v, %T", s, s) s, err := getStations([]byte(body))}我不能使用包 regexp 中的 reg.ReplaceAllString 函数,因为这不是字符串。它似乎是一个指针或什么的。body 存储 json。
1 回答
ibeautiful
TA贡献1993条经验 获得超6个赞
您遇到的问题是关于格式化动词 -%v会以详细的方式向您展示变量的外观。您也可以尝试使用%+vand %#v,但据我所见和猜测,您需要的是%s(如果实现了 stringer)或调用 struct 字段。
&{6}只是指向其中编号为 6 的结构的指针(%v用这种方式表示它)。&{%!s(int=6)}- 如果您尝试%s在没有 Stringer 接口实现的结构上使用,您会得到这个。&{field:6}-%+v还将生成结构的字段名称。&struct { v int }{v:6}这显示了(我的例子)一个结构名称和包和值 - 这就是%#v.
我建议直接调用结构字段。
func main() {
s := &struct {
v int
}{6}
fmt.Printf("%d", s.v)
}
输出6,但您需要调用字段而不是结构。
- 1 回答
- 0 关注
- 142 浏览
添加回答
举报
0/150
提交
取消
