教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 Go语言_接口查询

Go语言_接口查询

发布时间:2021-05-16   编辑:jiaochengji.com
教程集为您提供Go语言,接口查询等资源,欢迎您收藏本站,我们将为您提供最新的Go语言,接口查询资源

下面贴出一段接口查询代码的代码供大家学习


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")
	}

}


到此这篇关于“Go语言_接口查询”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
想系统学习GO语言(Golang
基于类型系统的面向对象编程语言Go
go语言中的继承和接口使用(八)
Go语言发展历史、核心、特性及学习路线
Go语言_接口查询
Go 之 interface接口理解
Go语言学习(十五)面向对象编程-接口
go语言接口的基本概念
Go语言中的接口
【七天从零实现ORM框架】Day02:database/sql基础

[关闭]
~ ~