• 技术文章 >后端开发 >Golang

    golang接口怎么实现

    青灯夜游青灯夜游2022-12-26 17:43:46原创1066

    在golang中,可以使用“type 接口类型名 interface{方法名1( 参数列表1 ) 返回值列表1 方法名2( 参数列表2 ) 返回值列表2…}”语句来声明接口;当“方法名”首字母是大写时,且“接口类型名”首字母也是大写时,这个方法可以被接口所在的包(package)之外的代码访问。

    本教程操作环境:windows7系统、GO 1.18版本、Dell G3电脑。

    Go语言不是一种 “传统” 的面向对象编程语言:它里面没有类和继承的概念。

    但是Go语言里有非常灵活的接口概念,通过它可以实现很多面向对象的特性。很多面向对象的语言都有相似的接口概念,但Go语言中接口类型的独特之处在于它是满足隐式实现的。也就是说,我们没有必要对于给定的具体类型定义所有满足的接口类型;简单地拥有一些必需的方法就足够了。

    这种设计可以让你创建一个新的接口类型满足已经存在的具体类型却不会去改变这些类型的定义;当我们使用的类型来自于不受我们控制的包时这种设计尤其有用。

    接口类型是对其它类型行为的抽象和概括;因为接口类型不会和特定的实现细节绑定在一起,通过这种抽象的方式我们可以让我们的函数更加灵活和更具有适应能力。

    接口是双方约定的一种合作协议。接口实现者不需要关心接口会被怎样使用,调用者也不需要关心接口的实现细节。接口是一种类型,也是一种抽象结构,不会暴露所含数据的格式、类型及结构。

    接口声明的格式

    每个接口类型由数个方法组成。接口的形式代码如下:

    type 接口类型名 interface{
        方法名1( 参数列表1 ) 返回值列表1
        方法名2( 参数列表2 ) 返回值列表2
        …
    }

    对各个部分的说明:

    type writer interface{
        Write([]byte) error
    }

    开发中常见的接口及写法

    Go语言提供的很多包中都有接口,例如 io 包中提供的 Writer 接口:

    type Writer interface {
        Write(p []byte) (n int, err error)
    }

    这个接口可以调用 Write() 方法写入一个字节数组([]byte),返回值告知写入字节数(n int)和可能发生的错误(err error)。

    类似的,还有将一个对象以字符串形式展现的接口,只要实现了这个接口的类型,在调用 String() 方法时,都可以获得对象对应的字符串。在 fmt 包中定义如下:

    type Stringer interface {
        String() string
    }

    Stringer 接口在Go语言中的使用频率非常高,功能类似于 Java 或者 C# 语言里的 ToString 的操作。

    Go语言的每个接口中的方法数量不会很多。Go语言希望通过一个接口精准描述它自己的功能,而通过多个接口的嵌入和组合的方式将简单的接口扩展为复杂的接口。本章后面的小节中会介绍如何使用组合来扩充接口。

    【相关推荐:Go视频教程编程教学

    以上就是golang接口怎么实现的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:go语言 Golang 指针
    上一篇:ubuntu怎么安装golang 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 分享一个非常好用的GO并发控制库 !• go语言中切片和数组是什么• go语言图标是什么动物• php和go语言的区别是什么• c语言中goto语句的含义是什么
    1/1

    PHP中文网