猿问

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

我通过包 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。


杨魅力
浏览 143回答 1
1回答

ibeautiful

您遇到的问题是关于格式化动词 -%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,但您需要调用字段而不是结构。
随时随地看视频慕课网APP

相关分类

Go
我要回答