怎么检查接口,老编译不过。求助

allenka · 2015-08-19 09:39:15 · 2012 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2015-08-19 09:39:15 的主题,其中的信息可能已经有所发展或是发生改变。

package main

import (
    "fmt"
)

type abc interface {
    up() bool
    down() bool
}

type myint uint32

func (m myint) up() bool {
    return true
}

func (m myint) down() bool {
    return false
}

func main() {
    var nn myint

    if ss, ok := nn.(abc); ok {
        fmt.Println("ok")
    }
}

老是提示 .\main.go:25: invalid type assertion: nn.(abc) (non-interface type myint on left)

哪位给看看?多谢


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

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

2012 次点击  
加入收藏 微博
3 回复  |  直到 2015-08-20 01:43:24
wangyanlb
wangyanlb · #1 · 10年之前

你只是定义了接口,又实现了接口。用反射包看看NN的类型

ckrissun
ckrissun · #2 · 10年之前

nn不是interface{}类型,不能使用接口查询

试试这样。

func main() { var nn interface{} = myint(0)

if ss, ok := nn.(abc); ok {
    _ = ss
    fmt.Println("ok")
}

}

allenka
allenka · #3 · 10年之前
ckrissunckrissun #2 回复

nn不是interface{}类型,不能使用接口查询 试试这样。 func main() { var nn interface{} = myint(0) if ss, ok := nn.(abc); ok { _ = ss fmt.Println("ok") } }

谢谢。解决问题了

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传