自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

簡析Go與其他語言不同的類型

開發(fā) 開發(fā)工具
筆者用Go寫了幾個應用之后,對它的幾個類型理解得可以說也比較到位。就談一下Go與其他語言不同的類型。

數(shù)組

它跟C語言的數(shù)組一樣,有固定的長度,聲明之前必須很設定其長度。由于受C語言的影響,我一直把它當作指針來看待。其實,Go的數(shù)組是個值類型,當把一個數(shù)組賦值給另一個數(shù)組時,是復制了本身給另一個數(shù)組。也就是說,當把數(shù)組當作參數(shù)進行傳遞時,會拷貝整個數(shù)組,當然也就與C語言的數(shù)組指針引用相比了,效率也就大打折扣了。Go數(shù)組有一點必須知道,就是它的類型是包括了長度的。一個數(shù)組包含了長度,儲存類型,實際值三個參數(shù)。[3]int與[4]int是兩個不同的數(shù)組。

切片

數(shù)組的兄弟slice(切片),它是Go中最常用到的類型,因為它是指針,而且沒長度的限制,可以隨時往里面加數(shù)據(jù)。所以它的性能不僅比數(shù)組高,而且更靈活。其實slice的數(shù)據(jù)結構里面包含了兩個列表:一個是數(shù)組,一個是指向這個數(shù)組的指針。當聲明一個slice時,Go會為數(shù)組分配一定的空間,當這個數(shù)組被填滿后,又會分配一個元素的空間。而這個指向數(shù)組的指針則會維護三個數(shù)據(jù),指針(point)、數(shù)組空間(room)和數(shù)組中有值的個數(shù)(num)。當room=num時,就是增加一個新的元素空間。

Map

Go的map類型跟python的字典幾乎一樣,都是key-value結構,是一個哈希表,但它的性能跟python比起來,有很大的區(qū)別,使用時要明白數(shù)據(jù)的大小范圍,可以參考這篇文章:http://monnand.me/p/Golang-map-bench/zhCN

channel

Go里面有channel類型是Go語言與眾不同的地方,也是它的特色類型,它提供了一種機制,在兩個并發(fā)執(zhí)行的函數(shù)之間進行同步,并通過傳遞(與該信道元素類型相符的)值來進行通信。事實上,可以認為 channel 是一個管道或者先進先出隊列,非常簡單且輕量。信道是引用類型,需要使用 make 分配內存,它經(jīng)常與Goroutine結合一起應用,不僅用來在兩并發(fā)函數(shù)之間通信,也可以用來阻塞程序。

原文鏈接:http://www.cnblogs.com/descusr/archive/2012/12/10/2812142.html

 

編輯推薦】

責任編輯:彭凡 來源: 博客園
相關推薦

2022-04-24 15:55:22

Go語言語言函數(shù)

2010-01-15 14:46:20

C++語言

2010-04-19 12:28:57

2010-03-11 15:16:52

Python編程語言

2011-08-25 10:24:27

Lua

2010-09-09 10:43:56

VPN服務

2024-02-26 08:49:32

NewbingAI模型

2011-07-12 14:04:58

2022-08-30 13:20:38

DNS攻擊網(wǎng)絡安全

2023-08-02 12:14:56

2023-06-26 00:03:55

Go語言類型

2012-08-17 10:59:08

IBMdW

2010-09-13 16:58:13

2009-06-08 21:25:29

Java聲音技術

2010-09-08 16:25:39

SIP協(xié)議棧

2010-09-10 09:52:44

開源協(xié)議棧

2022-09-02 08:03:44

IO程序網(wǎng)卡

2010-05-06 12:02:43

路由負載均衡

2011-06-16 10:04:36

光纜光纖

2022-09-28 11:57:27

滲透測試網(wǎng)絡滲透測試
點贊
收藏

51CTO技術棧公眾號