go语言的interface的基本用法、性质

什么是go语言的interface

go语言当中,interface是method方法的集合。interface这个单词翻译过来就是接口的意思,为了方便理解和加深对go语言的interface的记忆,我们大可往接口的方面进行联想,比如手机的充电接口,前段时间不是有新闻报道说欧洲颁布了什么规定,要各个手机品牌商要设计一样的充电口吗。

是的,go语言的interface就像这手机充电口,不管是安卓机,还是苹果机,都可以使用,而且可以满足不同的充电机制。也就是interface的机制大概可分为如下两点:

  1. 实现统一的接口(成为接口类型的数据);
  2. 利用统一的接口各干各的事(方法的不同实现方式)。

interface类型

如果一个对象实现了method1、method2、method3方法,那么method1、method2、method3的组合便称为interface。该对象便是该interface类型。如果另一个对象也实现了这三种方法,那么这个对象也是该interface类型。

interface的基本语法,如下:

type interfaceName interface {
	method1(args)
	method2(args)
	method3(args)
	......
	methodN(args)
}

interface实例

package main

import "fmt"

type Prolan struct{}

type Python struct {
	Prolan
	Lan string
}

type Go struct {
	Prolan
	Lan string
}

func (p Prolan) Basic() {
	fmt.Println("计算机编程语言可以用来编程!")
}

func (p Python) Do() {
	fmt.Println(p.Lan)
	fmt.Println("可以用来开发web、机器学习、人工智能!")
}

func (p Python) Superiority(y string) {
	p.Lan = p.Lan + y
	fmt.Println(p.Lan)
}

func (p Python) Unsuper() {
	fmt.Println("python的劣势是其性能不高!")
}

func (g Go) Do() {
	fmt.Println(g.Lan)
	fmt.Println("可以用来开发服务器、云计算、区块链等")
}

func (g Go) Superiority(y string) {
	g.Lan = g.Lan + y
	fmt.Println(g.Lan)
}

type C interface {
	Basic()
	Do()
	Superiority(y string)
}

type Unc interface {
	Basic()
	Do()
	Superiority(y string)
	Unsuper()
}

func main() {
	var p Python
	p.Lan = "python是高级的解释型语言。"
	var g Go
	g.Lan = "go是高级的编译型语言。"

	var c C
	c = p
	c.Basic()
	c.Do()
	c.Superiority("简单、简洁、开发效率高")
	c = g
	c.Basic()
	c.Do()
	c.Superiority("高性能,被誉为互联网的c语言")
	var unc Unc
	unc = p
	unc.Unsuper()

}

代码输出:
计算机编程语言可以用来编程!
python是高级的解释型语言。
可以用来开发web、机器学习、人工智能!
python是高级的解释型语言。简单、简洁、开发效率高
计算机编程语言可以用来编程!
go是高级的编译型语言。
可以用来开发服务器、云计算、区块链等
go是高级的编译型语言。高性能,被誉为互联网的c语言
python的劣势是其性能不高!

代码解析

如上代码,我们可以对go语言的interface结构简单总结如下几点:

  1. interface是方法的组合;
  2. 要称为特定interface的类型,必须实现该interface里的所有方法,比如Python和Go都实现了两种Do和Superiority,继承了一种Basic,所以可以用interface C的类型来实现,但是Python多实现了Unsuper,而Go没有,所以Python又可以用interface Unc来实现,而Go则不能。


全栈后端 / go语法 :













Copyright © 2022-2024 笨鸟工具 x1y1z1.com All Rights Reserved.