自学go语言,有一些语法看不懂,主要下面两个:
var _ api.FullNode = &FullNodeAPI{}
i, ok := typ.(invoke);
关于这两个语法,做过很多猜想,但始终不知道对不对,希望懂的大神能够解答下,谢谢
有疑问加站长微信联系(非本文作者)

自学go语言,有一些语法看不懂,主要下面两个:
var _ api.FullNode = &FullNodeAPI{}
i, ok := typ.(invoke);
关于这两个语法,做过很多猜想,但始终不知道对不对,希望懂的大神能够解答下,谢谢
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
`单行代码`
1.定义了一个匿名变量 2.类型断言,如果是invoke类型,ok为true,i为转换后的invoke类型,可点出内部变量
1.定义一个匿名变量的同时,后面跟了一个赋值,FullNodeAPI{}这个类型,虽然复制给了匿名变量,但也同时改变了api.FullNode的类型,再原文中,api.FullNode是一个interface,go里面接口的集成是不是一般都通过这种方式的?
谢谢答疑
@washduck 老兄在看filecoin的代码了?
不但在看,还做了好几个月项目了。go语言和rust都是现学现用,在语法不是很懂的情况下,靠依葫芦画瓢稀里糊涂的过去了,知道项目告一段落之后,才有时间回来补充基础。
为啥有分号呢?不是编译器会补上吗?
老哥牛逼
我也忘记了,哈哈
疫情当下,为了保住工作,不会也得会啊,哈哈。
老哥咋哪里高就了?
@liangjisheng 这是属于私人信息了,嘿嘿,关系好了在告诉你。
@washduck ok
1、定义了一个匿名的变量,类型是api包的FullNode接口类型,FullNodeAPI对象需要实现FullNode接口
2、类型断言,ok为true的时候,i的类型才是invoke的类型。
使用方法一般是
另一个使用方式是:
@minwell 谢谢大神指教。