Go 这究竟是什么;铸造;你在戈朗干什么?

Go 这究竟是什么;铸造;你在戈朗干什么?,go,syntax,casting,type-assertion,Go,Syntax,Casting,Type Assertion,有人能告诉我这个围棋语法的正确方向吗: (*int)(nil) 如果我有一个给定类型的a值,并且我想将其转换为float64,那么我可以这样做: var num int = 65 fnum := float64(num) func main() { concretevalue := dosomething("hello!") fmt.Printf("%T : %v", concretevalue, concretevalue) } f

有人能告诉我这个围棋语法的正确方向吗:

(*int)(nil)
如果我有一个给定类型的a值,并且我想将其转换为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)
}
如果我有一个接口,并且我想将其“强制转换”为某种类型,我可以这样做:

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)在哪里合适?如何获取有关此特定语法的信息?

这是一种类型转换,与
float64(num)
相同,但是,由于转换的类型是指针,因此需要额外的括号,否则*int(nil)将意味着将
nil
转换为int,然后取消对它的引用。

它声明了一个
nil
指针,指向
int
类型的值。表达式
(*int)(nil)
将非类型值
nil
转换为
*int
(*int)
中的括号将“*”与
int
分组。类似于