自学go语言,有一些语法看不懂,主要下面两个:
```go
var _ api.FullNode = &FullNodeAPI{}
i, ok := typ.(invoke);
```
关于这两个语法,做过很多猜想,但始终不知道对不对,希望懂的大神能够解答下,谢谢
1、定义了一个匿名的变量,类型是api包的FullNode接口类型,FullNodeAPI对象需要实现FullNode接口
2、类型断言,ok为true的时候,i的类型才是invoke的类型。
使用方法一般是
```
if i, ok := typ.(invoke);ok{
// 按照invoke类型处理i
...
}
```
另一个使用方式是:
```
v := typ.(type)
switch v{
case type1:
// 按照type1 类型处理v
...
}
```
#14
更多评论
1.定义一个匿名变量的同时,后面跟了一个赋值,FullNodeAPI{}这个类型,虽然复制给了匿名变量,但也同时改变了api.FullNode的类型,再原文中,api.FullNode是一个interface,go里面接口的集成是不是一般都通过这种方式的?
#2