日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

五、Go语言复合数据类型(下)

發布時間:2024/10/8 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 五、Go语言复合数据类型(下) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

@Author:Runsen

復合數據類型主要包含Go中的一些復雜類型,主要有指針類型,數組類型,切片類型,結構體類型,Map類型和Channel類型

下面,我們繼續學習結構體類型,Map類型和Channel類型。

文章目錄

  • 結構體類型
  • Map類型
  • Channel類型

結構體類型

在C語言我們都接觸過結構體,結構體是由一系列具有相同類型或不同類型的數據構成的數據集合。

下面就是結構體定義:

type struct_variable_type struct {member definition;member definition;...member definition; }

一旦定義了結構體類型,它就能用于變量的聲明,具體的聲明方法如下所示。

variable_name := struct_variable_type {value1, value2...valuen}

下面,我們看一個聲明結構體的具體示例。

package mainimport "fmt"type Person struct {Name stringAge int }func main() {// 三種聲明的方法var p1 Personp1.Name = "Runsen"p1.Age = 20fmt.Println(p1)var p2 = Person{Name:"Runsen", Age:20}fmt.Println(p2)p3 := Person{Name:"Runsen", Age:20}fmt.Println(p3) }{Runsen 20} {Runsen 20} {Runsen 20}

Map類型

Go和Python一樣,都有map。在Python里叫做字典,在Go里叫做映射。

Map是一種常用的kv數據結構,Go語言的Map就是哈希表數據結構。

聲明map類型變量

map[keyType]valueType

其中:

  • keyType:是key的類型
  • valueType:是key對應的值的類型

map類型的初始值是nil,要使用需要使用make()函數來初始化分配內存地址,語法如下:

make(map[keyType]valueType, [cap])

其中cap 表示map的容量。該參數雖然不是必須的,但是我們應該在初始化map的時候就為其指定一個合適的容量。

下面嘗試著在結構體類型中使用Map,具體代碼如下。

package mainimport ("fmt" )type Student struct {name stringage int }func useMap() {//使用前應該先初始化, 否則panic報錯// var map1 map[string]string// map1["a"] = "b" // will panicmap1 := make(map[string]Student)map1["s1"] = Student{name:"Runsen", age:20}fmt.Printf("%v\n", map1) //map[s1:{Runsen 20}]}func main() {useMap() }

Channel類型

go的channel,channel翻譯為頻道,顧名思義用來通信的,它是go一種特殊的數據類型,有點像Linux系統中的管道/消息隊列。

這里go是用于goroutines之間的通信,goroutine可以說 是用戶的線程,不同的 goroutine 之間是有消息傳遞這個需求的。

既然 channel 是一個管道,用來滿足不同 goroutine 間交換消息的。那么實現這樣一個管道要怎么做呢?其實很簡單。下面先把示例代碼貼出來。

package mainimport ("fmt""time" )func main() {ch := make(chan int) // 無緩沖go send(ch)go receive(ch)time.Sleep(time.Second * 1) }func send(ch chan int){ch <- 1ch <- 2ch <- 3ch <- 4ch <- 5 }func receive(ch chan int){var recv intfor{recv = <- chfmt.Println(recv)} }

輸出結果:

1 2 3 4 5

首先main函數開啟了兩個goroutine,一個用于執行send函數,該函數每次向channel ch中發送寫入一個int數值。一個執行receive函數,該函數每次從channel ch中讀取一個int數值。

如果當channel中沒有數據可讀時,receive goroutine則會進入阻塞狀態。因為receive中使用了for無限循環,表示receive這個goroutine會一直阻塞下去,直到從channel ch中讀取到數據,讀取到數據后進入下一輪循環由被阻塞在recv = <-ch上。

當main函數中的睡眠時間到了指定的時間后,main程序終止,意味著主程序結束,所有goroutine停止執行。

總結

以上是生活随笔為你收集整理的五、Go语言复合数据类型(下)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品亚洲五月天丁香 | 国产又粗又猛又爽免费视频 | 国产精品tv | 国产又粗又大又硬 | 99热这里只有精品7 青青草社区 | 9人人澡人人爽人人精品 | 好看的中文字幕av | 亚洲午夜久久久久久久国产 | 亚洲国产精品久久人人爱 | 午夜簧片 | av自拍网 | 高h乱l高辣h文短篇h | 日日精品| 久久精品人人爽 | 少妇一级淫片aaaaaaa | 另类小说五月天 | 免费日韩一区 | 色网站在线免费观看 | 欧美三级一级片 | 91av国产在线 | 毛片视频软件 | av性在线 | 波多野结衣中文字幕在线播放 | 国产高清精品在线 | 欧美精品一区二区久久婷婷 | 日本在线免费观看视频 | 人妻少妇精品无码专区二区 | 欧美片网站yy | 亚洲综合激情五月久久 | 免费成人深夜 | 日韩av在线影院 | 国产精品毛片久久久久久久 | 日日夜夜操操 | 热热久 | 欧美小视频在线 | 99色影院 | 在线日韩欧美 | 国产一级一区 | 日韩一区二区精品视频 | 国产真实生活伦对白 | 麻豆视频免费入口 | 成人二区三区 | 久草视频在线免费 | 久久国产精品区 | 亚洲尻逼| 国产中文自拍 | 一本色道久久88综合无码 | 久久久久久国产精品三级玉女聊斋 | 色综合一区二区三区 | 亚洲欧美日韩国产一区二区 | 逼逼av | 精品欧美一区二区三区久久久 | 久久影院精品 | 麻豆一区二区三区精品视频 | 国产精品成人久久久久久久 | 在线免费视频一区 | 在线天堂一区 | 奇米第四色在线 | 欧美一级做 | 色老太hd老太色hd | 色综合久久天天综合网 | 456av| 97免费看| 啪啪一区二区 | japanese24hdxxxx日韩| 国产乱来视频 | 成人涩涩网 | 亚洲精品在线中文字幕 | 黄av在线播放 | 久久蜜臀精品av | 91国自产精品中文字幕亚洲 | 日韩精品第三页 | jizzjizz美国| 日韩精品一区二区亚洲av | 国产无遮挡又黄又爽免费视频 | 日韩午夜毛片 | 性色国产成人久久久精品 | 成人网站免费观看入口 | 久久精品国产亚洲AV成人雅虎 | 午夜视频在线观看网站 | 人人妻人人澡人人爽欧美一区 | av永久在线| 尤果网福利视频在线观看 | 农村激情伦hxvideos | 亚洲二区av| av高清不卡 | av小说在线| 天天爱天天插 | 亚洲国产精品久久久久婷婷老年 | 在线观看av网站 | 清纯唯美亚洲 | 一级做a爰片毛片 | www.操.com | 色片在线免费观看 | 一区两区小视频 | 成人无码av片在线观看 | 欧美激情精品久久久久 | 麻豆三级在线观看 | 亚洲免费色视频 |