成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發 后端
本篇介紹的就是存儲類接口,存儲接是我的命名,其實人家就叫空接口。

[[356560]]

 前言

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

下面就來看看叭!!

空接口含義

本篇介紹的就是存儲類接口,存儲接是我的命名,其實人家就叫空接口。

空接口的作用就是可以存儲任何數據。

同理,空接口沒有定義任何方法,也就是說任何接口都實現了空接口,所以空接口才能存任意數據。

空接口

空接口示例代碼

  1. package main 
  2.  
  3. import "fmt" 
  4.  
  5. func main() { 
  6.     //變量直接賦值為空接口 
  7.     var x interface{} 
  8.     x = 1 
  9.     x = 1.1 
  10.     x = "666" 
  11.     x = [3]int{1, 2, 3} //數組 
  12.     x = []int{6, 23}    //切片 
  13.     x = map[string]string{ 
  14.         "Name""張三", 
  15.         "Age":  "666", 
  16.     fmt.Println(x) 
  17.     //map中value類型為空接口 
  18.     var y = map[string]interface{}{ 
  19.         "Name":"張三", 
  20.         "Age":18, 
  21.     fmt.Println(y) 

執行結果


空接口確實是可以存儲任何數據的,并且是直接可以使用的。

空接口在函數中的應用

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

我還用個毛靜態類型,以后都用空接口得了,嗯。。。這個按下不表,等會說。

函數參數為空接口代碼

  1. package main 
  2. import "fmt" 
  3.  
  4. func say(x interface{}) { 
  5.     fmt.Println(x) 
  6. func main() { 
  7.     say(1) 
  8.     say("666"
  9.     say([]int{5, 1, 3}) 

確實是如上述所說,函數參數為空接口類類型,的確可以傳任何數據。

但是僅限打印時可以隨便打印。

假設我想讓傳入的值+1。

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

報錯信息

 

所以說,空接口并不是萬能的。

類型斷言

上述函數雖然可以接收任意類型。

但是我有個需求。

如果傳入的是int類型,參數+100。

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

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

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

斷言語法

  1. 空接口.(類型) 

示例代碼

  1. func say(x interface{}) { 
  2.     value, ok := x.(int
  3.     if ok { 
  4.         //如果是ok表示斷言成功,是int類型 
  5.         fmt.Println(value + 100) 
  6.     value2, ok := x.(string) 
  7.     if ok { 
  8.         //斷言成功表示是字符串 
  9.         fmt.Println(value2 + "666"
  10.   } 

如果說有很多類型,斷言起來比較麻煩,這時候用switch比較好。

  1. func say(x interface{}) { 
  2.     switch value := x.(type) { 
  3.     case int
  4.         fmt.Println(value + 10) 
  5.     case string: 
  6.         fmt.Println(value + "666"
  7.     default
  8.         fmt.Println("啥都不是"
  9.   } 
  10. //case可以繼續寫,可以寫很多很多 

執行結果


總結

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

接口主要分為行為接口和存儲接口。

行為接口主要用在面向對象這個方向,規定父類必須有哪些動作。

空接口時為了方便存值,可以存儲任意類型。

 

責任編輯:姜華 來源: Go語言進階學習
相關推薦

2021-10-30 10:43:04

語言Go函數

2022-02-16 10:03:06

對象接口代碼

2020-12-07 05:59:02

語言Go接口

2020-10-22 08:33:22

Go語言

2020-11-11 10:52:54

Go語言C語言

2020-11-05 09:58:16

Go語言Map

2021-11-03 10:02:07

Go基礎函數

2021-10-09 07:10:31

Go語言基礎

2022-04-27 10:01:43

切片Go封裝

2020-10-23 08:38:19

Go語言

2020-10-25 07:33:13

Go語言

2020-12-27 10:15:44

Go語言channel管道

2020-12-30 09:04:32

Go語言TCPUDP

2020-10-22 11:15:47

Go語言變量

2021-09-29 10:00:07

Go語言基礎

2021-10-13 10:00:52

Go語言基礎

2021-10-16 10:17:51

Go語言數據類型

2020-10-27 11:24:29

avaScript m

2020-12-23 08:39:11

Go語言基礎技術

2021-09-27 09:18:30

ListIterato接口方法
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本黄色一级片视频 | 免费一区二区三区 | 国产精品国产成人国产三级 | 国产在线a| 国产黑丝在线 | 日韩欧美大片在线观看 | 亚洲精品一区二区在线观看 | 亚洲一区二区视频在线播放 | 99re热精品视频 | 天天干b| av天天看| 免费观看成人性生生活片 | 欧美在线| 国产亚洲精品久久情网 | 日本中文字幕在线观看 | 中文字幕av中文字幕 | 亚洲综合区 | 五月香婷婷 | 成人国产精品免费观看视频 | 成年人视频免费在线观看 | 91av免费看| 九九激情视频 | 国内精品一区二区三区 | 欧美一级黄色片在线观看 | 成人国产精品视频 | 国产一区二区精 | 欧产日产国产精品99 | 成人欧美一区二区三区黑人孕妇 | 精品国产99 | 亚洲一区二区三区 | 视频一区二区中文字幕 | 午夜播放器在线观看 | 黄网站涩免费蜜桃网站 | 国产精品一区二区三区在线 | av中文字幕在线 | 电影午夜精品一区二区三区 | 欧美激情在线精品一区二区三区 | 亚洲 欧美 日韩在线 | 99精品视频免费在线观看 | 欧美激情亚洲 | 欧美在线成人影院 |