在 Go 中,当您调用带有 (nil) 参数的结构时,它是什么意思?

我是围棋新手。我有以下Go代码(在Playground这里)。


我很困惑,因为我不明白第17行发生了什么。使用 nil 参数调用它,就好像它是一个函数一样,这意味着什么?函数名称前面的 是什么?myStruct[]*


我希望能够直接比较,但它们属于不同的类型。ab


 1:     package main

 2: 

 3:     import (

 4:         "fmt"

 5:         "google.golang.org/protobuf/runtime/protoimpl"

 6:     )

 7: 

 8:     type myStruct struct {

 9:         e   protoimpl.MessageState

10:     }

11: 

12:     func myFunc() (*myStruct) {

13:         return new(myStruct)

14:     }

15: 

16:     func main() {

17:         a := []*myStruct(nil)

18:         fmt.Println("a = ", a)

19:         b := myFunc()

20:         fmt.Println("b = ", b)

21:     }

输出:


a =  []

b =  &{{{} [] [] <nil>}}


扬帆大鱼
浏览 60回答 2
2回答

青春有我

这是一种类型转换。 转换为类型 ,指向 的指针切片。nil[]*myStructmyStruct

慕哥6287543

我不在乎这种语法,因为它只会引起混淆。您可以只使用,然后不必担心必须进行任何转换:varpackage mainimport "fmt"type date struct { year int }func main() {&nbsp; &nbsp;{&nbsp; &nbsp; &nbsp; d := []*date(nil)&nbsp; &nbsp; &nbsp; fmt.Println(d) // []&nbsp; &nbsp;}&nbsp; &nbsp;{&nbsp; &nbsp; &nbsp; var d []*date&nbsp; &nbsp; &nbsp; fmt.Println(d) // []&nbsp; &nbsp;}}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go