Go語言基礎go接口用法示例詳解
更新時間:2021年11月17日 08:50:48 作者:楓少文
這篇文章主要為大家介紹了Go語言基礎關于go接口的用法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,在日升職加薪

概述
Go 語言中的接口就是方法簽名的集合,接口只有聲明,沒有實現,不包含變量。
語法
定義接口
type [接口名] interface {
方法名1(參數列表) 返回值列表
方法名2(參數列表) 返回值列表
...
}
例子
type Isay interface{
sayHi()
}
實現接口
例子
//定義接口的實現類
type Chinese struct{}
//實現接口
func (_ *Chinese) sayHi() {
fmt.Println("中國人說嗨")
}
//中國人
type Chinese struct{}
//美國人
type Americans struct{}
func (this *Chinese) sayHi() {
fmt.Println("中國人說嗨")
}
func (this Americans) sayHi() {
fmt.Println("美國人說hi")
}
//調用
&Chinese{}.sayHi()
Americans{}.sayHi()
空接口
在Go語言中,所有其它數據類型都實現了空接口。
interface{}
var v1 interface{} = 1
var v2 interface{} = "abc"
var v3 interface{} = struct{ X int }{1}
如果函數打算接收任何數據類型,則可以將參考聲明為interface{}。最典型的例子就是標準庫fmt包中的Print和Fprint系列的函數:
func Fprint(w io.Writer, a ...interface{}) (n int, err error)
func Fprintf(w io.Writer, format string, a ...interface{})
func Fprintln(w io.Writer, a ...interface{})
func Print(a ...interface{}) (n int, err error)
func Printf(format string, a ...interface{})
func Println(a ...interface{}) (n int, err error)
接口的組合
一個接口中包含一個或多個接口
//說話
type Isay interface{
sayHi()
}
//工作
type Iwork interface{
work()
}
//定義一個接口,組合了上述兩個接口
type IPersion interface{
Isay
Iwork
}
type Chinese struct{}
func (_ Chinese) sayHi() {
fmt.Println("中國人說中國話")
}
func (_ Chinese) work() {
fmt.Println("中國人在田里工作")
}
//上述接口等價于:
type IPersion2 interface {
sayHi()
work()
}
總結
interface類型默認是一個指針使用空接口可以保存任意值不能比較空接口中的動態(tài)值定義了一個接口,這些方法必須都被實現,這樣編譯并使用
示例
package main
import "fmt"
//中國話
type Isay interface {
sayHi()
}
//工作
type Iwork interface {
work()
}
//中國人
type Chinese struct{}
//美國人
type Americans struct{}
func (this *Chinese) sayHi() {
fmt.Println("中國人說嗨")
}
func (this Americans) sayHi() {
fmt.Println("美國人說hi")
}
type IPersion interface {
Isay
Iwork
}
func (_ Chinese) work() {
fmt.Println("中國人在田里工作")
}
func main() {
var chinese Isay = &Chinese{}
chinese.sayHi()
Americans{}.sayHi()
//接口組合
var ipersion IPersion = &Chinese{}
ipersion.sayHi()
ipersion.work()
}
以上就是Go語言基礎go接口用法示例詳解的詳細內容,更多關于Go 語言基礎的資料請關注腳本之家其它相關文章!
相關文章
Go語言網站使用異步編程和Goroutine提高Web的性能
作為一門現代化編程語言,Go語言提供了強大的異步編程能力,使得程序員可以以更高效的方式處理并發(fā)任務,在Go語言中,使用Goroutine在單個進程中實現多任務并行處理,以及如何使用協程池來進一步提高Web服務器的處理能力,2024-01-01

