什么实例的 Kind 为 interface?

jdxj · · 1115 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

```go package main import ( "fmt" "reflect" ) type Ifer interface { DD() } type Ins struct{} func (ins Ins) DD() {} func main() { lg := true typ := reflect.TypeOf(lg) fmt.Println("lg: ", typ.Kind()) s := struct{}{} typ = reflect.TypeOf(s) fmt.Println("s: ", typ.Kind()) var ins If = Ins{} typ = reflect.TypeOf(ins) fmt.Println("ins: ", typ.Kind()) } ``` 上述代码输出为: ``` lg: bool s: struct ins: struct ``` `lg` 和 `s` 的 Kind 没有问题. 问题在于把 `If` 接口类型的 `ins` 传递给 `TypeOf()`, 其 Kind 为 struct. 1. 为什么传递接口, 而 Kind 仍为 struct? 2. 应该传递什么, Kind 才为 interface? > 之所以有这个问题是因为[源码中](https://golang.org/pkg/reflect/#Kind)的 `type Kind uint` 的可取值包括 `Interface`.

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1115 次点击  
加入收藏 微博
2 回复  |  直到 2019-08-05 09:29:48
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传