为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
扬帆大鱼 2022-08-24 20:33:41
我是围棋新手。我有以下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.MessageState10:     }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>}}
查看完整描述

2 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

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



查看完整回答
反对 回复 2022-08-24
?
慕哥6287543

TA贡献1831条经验 获得超10个赞

我不在乎这种语法,因为它只会引起混淆。您可以只使用,然后不必担心必须进行任何转换:var


package main

import "fmt"


type date struct { year int }


func main() {

   {

      d := []*date(nil)

      fmt.Println(d) // []

   }

   {

      var d []*date

      fmt.Println(d) // []

   }

}


查看完整回答
反对 回复 2022-08-24
  • 2 回答
  • 0 关注
  • 59 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信