您的位置:首页 > 编程语言 > Go语言

Go语言_接口查询

2016-06-24 13:47 447 查看
下面贴出一段接口查询代码的代码供大家学习

package main

import "fmt"

type IFile interface {
Read()
Write()
}

type IReader interface {
Read()
}

type File struct {
}

func (f *File) Read() {

}

func (f *File) Write() {

}

func main() {
f := new(File)

var f1 IFile = f // ok 因为FIle实现了IFile中的所有方法
var f2 IReader = f1 // ok 因为IFile中包含IReader中所有方法
// var f3 IFile = f2 // error 因为IReader并不能满足IFile(少一个方法)
//
var f3 IReader = new(File) // ok 因为File实现了IReader中所有方法
// var f4 IFile = f3 // error 因为IReader并不能满足IFile 同上..如何解决呢? 要用接口查询

// 接口查询
// 这个if语句检查file1接口指向的对象实例是否实现了IFile接口
// 如果实现了
// 则执行特定的代码。
// 注意:这里强调的是对象实例,也就是new(File)
// File包含IFile里所有的方法
// 所以ok = true
if f5, ok := f3.(IFile); ok {
fmt.Println(f5)
fmt.Println(".............")
}

// 询问接口它指向的对象是否是某个类型
// 这个if语句判断file1接口指向的对象实例是否是*File类型
// 依然ok
if f6, ok := f3.(*File); ok {
fmt.Println(f6)
}

fmt.Println(f1, f2, f3)

if b := 1; true {
fmt.Println(b, "判断1==1;true")
}

if c := 1; false {
fmt.Println(c, "判断1==1;false")
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: