gpt4 book ai didi

Golang 地址运算符和 (*int)(Type) 语法

转载 作者:IT王子 更新时间:2023-10-29 02:28:15 26 4
gpt4 key购买 nike

开始玩弄golang正在查看自定义 json.Unmarshal .在博客文章中有以下内容:

type FlexInt int

func (fi *FlexInt) UnmarshalJSON(data []byte) error {
if data[0] != '"' {
return json.Unmarshal(data, (*int)(fi))
}
var s string
if err := json.Unmarshal(data, &s); err != nil {
return err
}
i, err := strconv.Atoi(s)
if err != nil {
return err
}
*fi = FlexInt(i)
return nil
}

我明白它在做什么 - 但我不明白 (*int)(fi)部分。查看 fi 的值指针与(*int)(fi)相同- (*int)(fi) == fi .然而,当我将该行更改为简单的 fi 时然后它会无限循环

最佳答案

表达式converts fi*int。结果包含相同的地址,但具有不同的类型。

如果 *FlexInt 被传递给 json.Unmarshal,那么 json.Unmarshal 将调用 *FlexInt.UnmarshalJSON 调用 json.Unmarshal 等的方法。

关于Golang 地址运算符和 (*int)(Type) 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56996074/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com