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")
}
}
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")
}
}
相关文章推荐
- 算法导论一:Analysis of Algorithms
- (EM算法)The EM Algorithm(1)
- New algorithm for better pedestrian detection in self-driving car
- Go语言_接口赋值
- 设计模式-模板方法模式(Go语言描述)
- 一件趣事引发的程序
- Category类别的使用
- django-BBS(2)
- 在Ubuntu14.04_ROS_indigo上安装Kinect2驱动和bridge
- 在Ubuntu14.04_ROS_indigo上安装Kinect2驱动和bridge
- Anti-Goldbach's Conjecture 素数打表
- 第129课:Spark streaming源码经典解读系统之四:GobGenerator工作内幕源码解密
- Golang之chan/goroutine
- ZOJ 3492 F - Kagome Kagome
- Anti-Goldbach's Conjecture
- mongo 查找附近点
- Django的模板目录设置
- Mac下搭建GO环境
- hdu 1824 Let's go home【2-SAT------强连通Tarjan】
- Django 用户 权限 组 机制