最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go語(yǔ)言接口定義與用法示例

 更新時(shí)間:2016年07月27日 15:21:58   作者:軒脈刃  
這篇文章主要介紹了Go語(yǔ)言接口定義與用法,較為詳細(xì)的分析了Go語(yǔ)言中接口的概念、定義、用法,需要的朋友可以參考下

本文實(shí)例講述了Go語(yǔ)言接口定義與用法。分享給大家供大家參考,具體如下:

在Go中,接口interface其實(shí)和其他語(yǔ)言的接口意思也沒(méi)什么區(qū)別。interface理解其為一種類型的規(guī)范或者約定。一種類型是不是“實(shí)現(xiàn)”了一個(gè)接口呢?就看這種類型是不是實(shí)現(xiàn)了接口中定義的所有方法。

1. 接口的定義和使用。

比如

復(fù)制代碼 代碼如下:
type I interface{
    Get() int
    Put(int)
}

這段話就定義了一個(gè)接口,它包含兩個(gè)函數(shù)Get和Put

好了,我的一個(gè)接口實(shí)現(xiàn)了這個(gè)接口:

復(fù)制代碼 代碼如下:
type S struct {val int}
func (this *S) Get int {
    return this.val
}
func (this *S)Put(v int) {
    this.val = v
}

這個(gè)結(jié)構(gòu)S就是實(shí)現(xiàn)了接口I

2. 空接口

對(duì)于空接口interface{} 其實(shí)和泛型的概念很像。任何類型都實(shí)現(xiàn)了空接口。

下面舉個(gè)例子:

一個(gè)函數(shù)實(shí)現(xiàn)這樣的功能:

以任何對(duì)象作為參數(shù),如果這個(gè)對(duì)象是實(shí)現(xiàn)了接口I,那么就調(diào)用接口I的Get方法

很多語(yǔ)言都是這樣的邏輯:

復(fù)制代碼 代碼如下:
function g(obj){
    if (obj is I) {
        return (I)obj.Get()
    }
}

Go中是這樣實(shí)現(xiàn)的:
復(fù)制代碼 代碼如下:
func g(any interface{}) int {
    return any.(I).Get()
}

這里的any.(I)是不是很語(yǔ)義化?“任何實(shí)現(xiàn)了I接口的對(duì)象”

3. Go中interface的寫法:

下面看幾個(gè)interface的例子:

復(fù)制代碼 代碼如下:
func SomeFunction(w interface{Write(string)}){
    w.Write("pizza")
}

這個(gè)例子中,直接將interface定義在參數(shù)中,很特別…
復(fù)制代碼 代碼如下:
func weirdFunc( i int ) interface{} {
  if i ==  0 {
    return "zero"
  }
  return i;
}

這里例子中,由于有可能返回string,也有可能返回int,因此將返回值設(shè)置成為interface,這個(gè)在Go的package包中會(huì)大量見(jiàn)到。

希望本文所述對(duì)大家Go語(yǔ)言程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 使用Golang進(jìn)行比較版本號(hào)大小

    使用Golang進(jìn)行比較版本號(hào)大小

    在日常開發(fā)中,比較版本號(hào)大小的情況是經(jīng)常遇到的,這篇文章主要為大家詳細(xì)介紹了如何使用Golang進(jìn)行比較版本號(hào)大小,需要的小伙伴可以參考下
    2024-01-01
  • Go語(yǔ)言 init函數(shù)的具體使用

    Go語(yǔ)言 init函數(shù)的具體使用

    init()函數(shù)是Go語(yǔ)言中一種特殊的函數(shù),用于在包被導(dǎo)入時(shí)執(zhí)行一次性的初始化操作,本文就來(lái)介紹一下Go語(yǔ)言 init函數(shù)的具體使用,感興趣的可以了解一下
    2024-09-09
  • 一文帶你掌握GoLang中的指針

    一文帶你掌握GoLang中的指針

    針是?Go?編程語(yǔ)言的重要組成部分,它們提供了一種直接引用和操作內(nèi)存中數(shù)據(jù)的方法,在這篇文章中,我們將探討一些技巧和技巧,以掌握?GoLang?中的指針并編寫高效的代碼,需要的可以參考一下
    2023-05-05
  • 使用Golang的Context管理上下文的方法

    使用Golang的Context管理上下文的方法

    這篇文章主要介紹了使用Golang的Context管理上下文的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • golang讀取各種配置文件(ini、json、yaml)

    golang讀取各種配置文件(ini、json、yaml)

    日常項(xiàng)目中,讀取各種配置文件是避免不了的,本文主要介紹了golang讀取各種配置文件(ini、json、yaml),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Golang CSP并發(fā)機(jī)制及使用模型

    Golang CSP并發(fā)機(jī)制及使用模型

    這篇文章主要為大家介紹了Golang CSP并發(fā)機(jī)制及使用模型,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Go json反序列化“null“的問(wèn)題解決

    Go json反序列化“null“的問(wèn)題解決

    本文主要介紹了Go json反序列化“null“的問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 淺談go語(yǔ)言中別名類型的使用

    淺談go語(yǔ)言中別名類型的使用

    類型別名是 Go 1.9 版本添加的新功能,主要用于解決代碼升級(jí)、遷移中存在的類型兼容性問(wèn)題,本文主要介紹了go語(yǔ)言中別名類型的使用,感興趣的可以了解一下
    2024-01-01
  • go開發(fā)過(guò)程中mapstructure使用示例詳解

    go開發(fā)過(guò)程中mapstructure使用示例詳解

    mapstructure是一個(gè)Go語(yǔ)言庫(kù),用于將映射(如map或struct)解碼為結(jié)構(gòu)體,便于處理JSON、YAML等配置文件數(shù)據(jù),通過(guò)字段名或結(jié)構(gòu)體標(biāo)簽控制解碼,支持嵌套結(jié)構(gòu)體、靈活處理多種數(shù)據(jù)源,需要注意錯(cuò)誤處理,該庫(kù)適合于Go開發(fā)中配置數(shù)據(jù)的讀取和轉(zhuǎn)換
    2024-10-10
  • Golang使用Channel組建高并發(fā)HTTP服務(wù)器

    Golang使用Channel組建高并發(fā)HTTP服務(wù)器

    Golang 作為一門高效的語(yǔ)言,在網(wǎng)絡(luò)編程方面表現(xiàn)也非常出色,這篇文章主要介紹了如何使用 Golang 和 Channel 組建高并發(fā) HTTP 服務(wù)器,感興趣的可以了解一下
    2023-06-06

最新評(píng)論

黄石市| 通许县| 林西县| 京山县| 榆中县| 桐梓县| 连云港市| 荆门市| 酉阳| 贺州市| 山东省| 白玉县| 太仓市| 郁南县| 灯塔市| 增城市| 闵行区| 平安县| 安阳市| 犍为县| 山阴县| 呼玛县| 凤庆县| 黑龙江省| 肥乡县| 宝山区| 保靖县| 行唐县| 铁力市| 方城县| 田阳县| 广安市| 宿迁市| 永修县| 保康县| 远安县| 沁阳市| 拜泉县| 怀仁县| 易门县| 陵川县|