<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一篇文章帶你了解Go語(yǔ)言基礎(chǔ)之接口(下篇)

          共 2007字,需瀏覽 5分鐘

           ·

          2020-12-10 08:11

          點(diǎn)擊上方“Go語(yǔ)言進(jìn)階學(xué)習(xí)”,進(jìn)行關(guān)注

          回復(fù)“Go語(yǔ)言”即可獲贈(zèng)從入門到進(jìn)階共10本電子書

          潯陽(yáng)地僻無(wú)音樂(lè),終歲不聞絲竹聲。

          前言

          Hey,大家好呀,我是碼農(nóng),星期八,上次咱們說(shuō)的接口呀,還是沒說(shuō)完,還剩下了一些

          下面就來(lái)看看叭!!


          空接口含義

          本篇介紹的就是存儲(chǔ)類接口,存儲(chǔ)接是我的命名,其實(shí)人家就叫空接口。

          空接口的作用就是可以存儲(chǔ)任何數(shù)據(jù)。

          同理,空接口沒有定義任何方法,也就是說(shuō)任何接口都實(shí)現(xiàn)了空接口,所以空接口才能存任意數(shù)據(jù)。


          空接口

          空接口示例代碼

          package main
          import "fmt"
          func main() { //變量直接賦值為空接口 var x interface{} x = 1 x = 1.1 x = "666" x = [3]int{1, 23} //數(shù)組 x = []int{6, 23} //切片 x = map[string]string{ "Name": "張三" "Age": "666",} fmt.Println(x) //map中value類型為空接口 var y = map[string]interface{}{ "Name":"張三", "Age":18,} fmt.Println(y)}

          執(zhí)行結(jié)果

          空接口確實(shí)是可以存儲(chǔ)任何數(shù)據(jù)的,并且是直接可以使用的。


          空接口在函數(shù)中的應(yīng)用

          不知道你有沒有想過(guò),如果函數(shù)的參數(shù),也是一個(gè)空接口,那不是就可以隨便傳值了嗎?

          我還用個(gè)毛靜態(tài)類型,以后都用空接口得了,嗯。。。這個(gè)按下不表,等會(huì)說(shuō)。


          函數(shù)參數(shù)為空接口代碼

          package mainimport "fmt"
          func say(x interface{}) { fmt.Println(x)}func main() { say(1) say("666") say([]int{5, 13})}

          確實(shí)是如上述所說(shuō),函數(shù)參數(shù)為空接口類類型,的確可以傳任何數(shù)據(jù)。

          但是僅限打印時(shí)可以隨便打印。

          假設(shè)我想讓傳入的值+1

          func say(x interface{}) {    fmt.Println(x)    fmt.Println(x+1)}

          報(bào)錯(cuò)信息

          所以說(shuō),空接口并不是萬(wàn)能的。


          類型斷言

          上述函數(shù)雖然可以接收任意類型。

          但是我有個(gè)需求。

          如果傳入的是int類型,參數(shù)+100。

          如果傳入的是字符串類型,參數(shù)+"666"。

          如果傳入的是其他類型,返回不存在。

          這該怎么辦呢?這就要用到斷言這個(gè)功能。

          斷言語(yǔ)法

          空接口.(類型)

          示例代碼

          func say(x interface{}) {    value, ok := x.(int)    if ok {        //如果是ok表示斷言成功,是int類型        fmt.Println(value + 100)}    value2, ok := x.(string)    if ok {        //斷言成功表示是字符串        fmt.Println(value2 + "666")  }}

          如果說(shuō)有很多類型,斷言起來(lái)比較麻煩,這時(shí)候用switch比較好。

          func say(x interface{}) {    switch value := x.(type) {    case int:        fmt.Println(value + 10)    case string:        fmt.Println(value + "666")    default:        fmt.Println("啥都不是")  }}//case可以繼續(xù)寫,可以寫很多很多

          執(zhí)行結(jié)果


          總結(jié)

          到此為止,Go語(yǔ)言的接口是全部都講完了。

          接口主要分為行為接口存儲(chǔ)接口。

          • 行為接口主要用在面向?qū)ο筮@個(gè)方向,規(guī)定父類必須有哪些動(dòng)作。

          • 空接口時(shí)為了方便存值,可以存儲(chǔ)任意類型。

          如果在操作過(guò)程中有任何問(wèn)題,記得下面留言,我們看到會(huì)第一時(shí)間解決問(wèn)題。

          加油?。。∥沂谴a農(nóng)星期八,如果覺得還不錯(cuò),記得動(dòng)手點(diǎn)贊一下哈。感謝你的觀看。

          -------------------?End?-------------------

          往期精彩文章推薦:

          歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持

          想加入Go學(xué)習(xí)群請(qǐng)?jiān)诤笈_(tái)回復(fù)【入群

          萬(wàn)水千山總是情,點(diǎn)個(gè)【在看】行不行

          瀏覽 43
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩一级在线观看免费 | 熟女草逼 | 成人电影久久久 | 欧美日韩中文字幕在线视频 | 操逼专区 |