Go语言_接口篇

简介:

在Go中,接口interface其实和其他语言的接口意思也没什么区别。interface理解其为一种类型的规范或者约定。一种类型是不是“实现”了一个接口呢?就看这种类型是不是实现了接口中定义的所有方法。

1 接口的定义和使用。

比如

1
2
3
4
5
type I  interface {
     Get()  int
     Put( int )
 
}

这段话就定义了一个接口,它包含两个函数Get和Put

 

好了,我的一个接口实现了这个接口:

1
2
3
4
5
6
7
8
type S  struct  {val  int }
func ( this  *S) Get  int  {
     return  this .val
}
func ( this  *S)Put(v  int ) {
     this .val = v
 
}

这个结构S就是实现了接口I

2 空接口

对于空接口interface{} 其实和泛型的概念很像。任何类型都实现了空接口。

下面举个例子:

一个函数实现这样的功能:

以任何对象作为参数,如果这个对象是实现了接口I,那么就调用接口I的Get方法

很多语言都是这样的逻辑:

1
2
3
4
5
6
function g(obj){
     if  (obj  is  I) {
         return  (I)obj.Get()
     }
 
}

Go中是这样实现的:

1
2
3
4
func g(any  interface {})  int  {
     return  any.(I).Get()
 
}

这里的any.(I)是不是很语义化?“任何实现了I接口的对象”

3 Go中interface的写法:

下面看几个interface的例子:

1
2
3
4
func SomeFunction(w  interface {Write( string )}){
     w.Write( "pizza" )
 
}

这个例子中,直接将interface定义在参数中,很特别…

 

1
2
3
4
5
6
func weirdFunc( i  int  interface {} {
   if  i ==  0 {
     return  "zero"
   }
   return  i;
}

这里例子中,由于有可能返回string,也有可能返回int,因此将返回值设置成为interface,这个在Go的package包中会大量见到。

目录
相关文章
|
21天前
|
自然语言处理 Go 索引
Go语言学习8-接口类型
【4月更文挑战第1天】本篇 Huazie 向大家介绍 Go 语言中的接口类型
20 2
Go语言学习8-接口类型
|
14天前
|
存储 机器学习/深度学习 算法
|
1月前
|
安全 Go
接口在Go语言中的实现与应用
【2月更文挑战第19天】接口是Go语言中一种重要的抽象机制,它定义了一组方法的集合,而不关注具体的实现。本文将深入探讨Go语言中接口的实现方式、接口的应用场景以及接口在Go语言设计中的优势,帮助读者更好地理解和应用接口。
|
6月前
|
存储 安全 Go
Go语言空接口如此简单,原来可以这么玩!
Go语言空接口如此简单,原来可以这么玩!
89 0
|
4月前
|
存储 网络协议 程序员
Go语言的常用基础
Go语言有一些让人影响深刻的核心特性核心特性,比如:以消息传递模式的并发、独特的_符号、defer 、函数和方法、值传递等等,可以查看这篇文章《Go语言-让我印象深刻的13个特性》。首先要记住一些核心特性的用法。
Go语言的常用基础
|
4月前
|
搜索推荐 Java Go
go语言中的接口(一)
go语言中的接口
27 0
|
4月前
|
Go
go语言中的接口(二)
go语言中的接口
35 0
|
4月前
|
自然语言处理 编译器 Go
GO语言中的方法
GO语言中的方法
31 0
|
4月前
|
存储 Java Unix
GO语言基础(上)
GO语言基础(上)
|
7月前
|
自然语言处理 小程序 Java
Go语言基础
Go语言基础

热门文章

最新文章