【问题标题】:What exactly is this "cast" doing in Golang?这个“演员”在 Golang 中到底在做什么?
【发布时间】:2021-03-07 15:12:27
【问题描述】:

有人能指出这个 Go 语法的正确方向吗:

(*int)(nil)

如果我有一个给定类型的值,并且我想将其转换为 float64,我可以这样做:

var num int = 65
fnum := float64(num)

如果我有一个接口并且我想将它“转换”为某种类型,我可以这样做:

func main() {
    concretevalue := dosomething("hello!")
    fmt.Printf("%T : %v", concretevalue, concretevalue)
}

func dosomething( v interface{} ) string {
    return v.(string)
}

(*int)(nil) 适合哪里?如何获取有关此特定语法的信息?

【问题讨论】:

标签: go syntax casting type-assertion


【解决方案1】:

这是一个类型转换,和float64(num)一样,但是,因为转换后的类型是一个指针,所以需要额外的括号,否则*int(nil)意味着将nil转换为int,然后解引用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-07
    • 1970-01-01
    • 2018-04-19
    • 1970-01-01
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    • 2014-12-01
    相关资源
    最近更新 更多