为了账号安全,请及时绑定邮箱和手机立即绑定

从存储解组函数输出的变量中删除所有非字母数字字符

从存储解组函数输出的变量中删除所有非字母数字字符

Go
狐的传说 2023-08-14 14:57:49
我通过 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 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

您遇到的问题是关于格式化动词 - %v- 将向您详细展示变量的外观。您也可以尝试使用%+vand ,但据我所见和猜测,%#v您需要的是(如果实现了 stringer)或调用结构体字段。%s


  • &{6}只是指向其中包含数字 6 的结构体的指针(%vwith 以这种方式表示)。

  • &{%!s(int=6)}- 如果您尝试%s在没有 Stringer 接口实现的结构上使用,您将会得到这个。

  • &{field:6}-%+v还将生成结构的字段名称。

  • &struct { v int }{v:6}这显示了(我的示例)结构名称、包和值 - 这就是%#v.

我建议直接调用struct field。

func main() {

    s := &struct {

        v int

    }{6}

    fmt.Printf("%d", s.v)

}

输出6,但您需要调用 field 而不是 struct。


查看完整回答
反对 回复 2023-08-14
  • 1 回答
  • 0 关注
  • 99 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信