欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go語言基礎(chǔ)go接口用法示例詳解

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

在這里插入圖片描述

概述

Go 語言中的接口就是方法簽名的集合,接口只有聲明,沒有實(shí)現(xiàn),不包含變量。

語法

定義接口

type [接口名] interface {
    方法名1(參數(shù)列表) 返回值列表   
    方法名2(參數(shù)列表) 返回值列表
    ...
}

例子

type Isay interface{
  sayHi()
}

實(shí)現(xiàn)接口

例子

//定義接口的實(shí)現(xiàn)類
type Chinese struct{}
//實(shí)現(xiàn)接口
func (_ *Chinese) sayHi() {
  fmt.Println("中國人說嗨")
}
//中國人
type Chinese struct{}
//美國人
type Americans struct{}
func (this *Chinese) sayHi()  {
  fmt.Println("中國人說嗨")
}
func (this Americans) sayHi()  {
  fmt.Println("美國人說hi")
}
//調(diào)用
&Chinese{}.sayHi()
Americans{}.sayHi()

空接口

在Go語言中,所有其它數(shù)據(jù)類型都實(shí)現(xiàn)了空接口。

interface{}
var v1 interface{} = 1
var v2 interface{} = "abc"
var v3 interface{} = struct{ X int }{1}

如果函數(shù)打算接收任何數(shù)據(jù)類型,則可以將參考聲明為interface{}。最典型的例子就是標(biāo)準(zhǔn)庫fmt包中的Print和Fprint系列的函數(shù):

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)

接口的組合

一個(gè)接口中包含一個(gè)或多個(gè)接口

//說話
type Isay interface{
  sayHi()
}
//工作
type Iwork interface{
  work()
}

//定義一個(gè)接口,組合了上述兩個(gè)接口
type IPersion interface{
  Isay
  Iwork
}

type Chinese struct{}

func (_ Chinese) sayHi() {
  fmt.Println("中國人說中國話")
}

func (_ Chinese) work() {
	fmt.Println("中國人在田里工作")
}

//上述接口等價(jià)于:
type IPersion2 interface {
	sayHi()
	work()
}

總結(jié)

interface類型默認(rèn)是一個(gè)指針使用空接口可以保存任意值不能比較空接口中的動(dòng)態(tài)值定義了一個(gè)接口,這些方法必須都被實(shí)現(xiàn),這樣編譯并使用

示例

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語言基礎(chǔ)go接口用法示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Go 語言基礎(chǔ)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • golang中使用proto3協(xié)議導(dǎo)致的空值字段不顯示的問題處理方案

    golang中使用proto3協(xié)議導(dǎo)致的空值字段不顯示的問題處理方案

    這篇文章主要介紹了golang中使用proto3協(xié)議導(dǎo)致的空值字段不顯示的問題處理方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • go語言分布式id生成器及分布式鎖介紹

    go語言分布式id生成器及分布式鎖介紹

    這篇文章主要為大家介紹了go語言分布式id生成器及分布式鎖介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • go嵌套匿名結(jié)構(gòu)體的初始化詳解

    go嵌套匿名結(jié)構(gòu)體的初始化詳解

    這篇文章主要介紹了go嵌套匿名結(jié)構(gòu)體的初始化詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • 在Golang中使用C語言代碼實(shí)例

    在Golang中使用C語言代碼實(shí)例

    這篇文章主要介紹了在Golang中使用C語言代碼實(shí)例,本文先是給出了一個(gè)Hello World例子、Golang 引用 C例子,并總結(jié)了一些要注意的地方,需要的朋友可以參考下
    2014-10-10
  • Go使用Google?Gemini?Pro?API創(chuàng)建簡單聊天機(jī)器人

    Go使用Google?Gemini?Pro?API創(chuàng)建簡單聊天機(jī)器人

    這篇文章主要為大家介紹了Go使用Google?Gemini?Pro?API創(chuàng)建簡單聊天機(jī)器人實(shí)現(xiàn)過程詳解,本文將通過最新的gemini?go?sdk來實(shí)現(xiàn)命令行聊天機(jī)器人
    2023-12-12
  • 減少 golang 二進(jìn)制文件大小操作

    減少 golang 二進(jìn)制文件大小操作

    這篇文章主要介紹了減少 golang 二進(jìn)制文件大小操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Go語言接口的用法詳解

    Go語言接口的用法詳解

    本文詳細(xì)講解了Go語言接口的用法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • goland中導(dǎo)包報(bào)紅和go mod問題

    goland中導(dǎo)包報(bào)紅和go mod問題

    這篇文章主要介紹了goland中導(dǎo)包報(bào)紅和go mod問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 詳解Go程序添加遠(yuǎn)程調(diào)用tcpdump功能

    詳解Go程序添加遠(yuǎn)程調(diào)用tcpdump功能

    這篇文章主要介紹了go程序添加遠(yuǎn)程調(diào)用tcpdump功能,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • 一文詳解Golang內(nèi)存管理之??臻g管理

    一文詳解Golang內(nèi)存管理之??臻g管理

    這篇文章主要介紹了Golang內(nèi)存管理的??臻g管理,文章通過代碼示例介紹的非常詳細(xì),對(duì)我們學(xué)習(xí)Golang內(nèi)存管理有一定的幫助,需要的朋友跟著小編一起來學(xué)習(xí)吧
    2023-06-06

最新評(píng)論