《Go 語(yǔ)言實(shí)戰(zhàn)》摘抄

第 19 頁(yè)

在 Go 語(yǔ)言中,所有的變量都以值得方式傳遞。因?yàn)橹羔樧兞康闹凳撬赶虻膬?nèi)存地址扒袖,在函數(shù)間傳遞指針變量,是在傳遞這個(gè)地址值亩码,所以依舊被看作以值得方式在傳遞季率。

第 39 頁(yè)

可以訪問(wèn) http://golang.org/pkg/fmt/ 或者在終端輸入 godoc fmt 來(lái)了解更多關(guān)于 fmt 包的細(xì)節(jié)。

第 40 頁(yè)

使用分布式版本控制系統(tǒng)(Distributed Version Control System描沟,DVCS)來(lái)分享代碼飒泻,如 GitHub、Launchpad 還有 Bitbucket吏廉。Go 語(yǔ)言的工具鏈本身就支持從這些網(wǎng)站及類似網(wǎng)站獲取源代碼泞遗。

第 44 頁(yè)

go vet 命令會(huì)幫開(kāi)發(fā)人員檢測(cè)代碼的常見(jiàn)錯(cuò)誤。

第 46 頁(yè)

Go 語(yǔ)言有兩種方法為開(kāi)發(fā)者生成文檔席覆∈氛蓿可以在終端上直接使用 go doc 命令來(lái)打印文檔∨迳耍可以使用 godoc 程序來(lái)啟動(dòng)一個(gè) Web 服務(wù)器聊倔,通過(guò)點(diǎn)擊的方式來(lái)查看 Go 語(yǔ)言的包的文檔。

go doc tar

godoc -http=:6060(這個(gè)命令通知 godoc 在端口 6060 啟動(dòng) Web 服務(wù)器生巡。如果瀏覽器已經(jīng)打開(kāi)耙蔑,導(dǎo)航到 http://localhost:6060 可以看到一個(gè)頁(yè)面,包含所有 Go 標(biāo)準(zhǔn)庫(kù)和你的 GOPATH 下的 Go 源代碼的文檔)

第 53 頁(yè)

在 Go 語(yǔ)言里孤荣,數(shù)組是一個(gè)長(zhǎng)度固定的數(shù)據(jù)類型甸陌,用于存儲(chǔ)一段具有相同的類型的元素的連續(xù)塊须揣。
因?yàn)槠湔加玫膬?nèi)存是連續(xù)分配的,由于內(nèi)存連續(xù)邀层,CPU 能把正在使用的數(shù)據(jù)緩存更久的時(shí)間返敬。而且內(nèi)存連續(xù)很容易計(jì)算索引,可以快速迭代數(shù)組里的所有元素寥院。數(shù)組的類型信息可以提供每次訪問(wèn)一個(gè)元素時(shí)需要在內(nèi)存中移動(dòng)的距離劲赠。既然數(shù)組的每個(gè)元素類型相同,又是連續(xù)分配秸谢,就可以以固定速度索引數(shù)組中的任意數(shù)據(jù)凛澎,速度非常快估蹄。

第 56 頁(yè)

在 Go 語(yǔ)言里塑煎,數(shù)組是一個(gè)值。這意味著數(shù)組可以用在賦值操作中臭蚁。變量名代表整個(gè)數(shù)組最铁,因此,同樣類型的數(shù)組可以賦值給另一個(gè)數(shù)組垮兑,復(fù)制之后冷尉,兩個(gè)數(shù)組的值完全一樣。
數(shù)組變量的類型包括數(shù)組長(zhǎng)度和每個(gè)元素的類型系枪。只有這兩部分都相同的數(shù)組雀哨,才是類型相同的數(shù)組,才能互相賦值私爷。
復(fù)制指針數(shù)組雾棺,只會(huì)復(fù)制指針的值,而不會(huì)復(fù)制指針?biāo)赶虻闹党幕耄瑥?fù)制之后捌浩,兩個(gè)數(shù)組指向同一組字符串。

第 58 - 62 頁(yè)

數(shù)組本身只有一個(gè)維度嚎卫,不過(guò)可以組合多個(gè)數(shù)組創(chuàng)建多維數(shù)組嘉栓。多維數(shù)組很容易管理具有父子關(guān)系的數(shù)據(jù)或者與坐標(biāo)系相關(guān)聯(lián)的數(shù)據(jù)。
只要類型一致拓诸,就可以將多維數(shù)組互相賦值,多維數(shù)組的類型包括每一維度的長(zhǎng)度以及最終存儲(chǔ)在元素中的數(shù)據(jù)的類型麻昼。
因?yàn)槊總€(gè)數(shù)組都是一個(gè)值奠支,所以可以獨(dú)立復(fù)制某個(gè)維度。

根據(jù)內(nèi)存和性能來(lái)看抚芦,在函數(shù)間傳遞數(shù)組是一個(gè)開(kāi)銷很大的操作倍谜。在函數(shù)之間傳遞變量時(shí)迈螟,總是以值的方式傳遞的。如果這個(gè)變量是一個(gè)數(shù)組尔崔,意味著整個(gè)數(shù)組答毫,不管有多長(zhǎng),都會(huì)完整復(fù)制季春,并傳遞給函數(shù)洗搂。

切片是一種數(shù)據(jù)結(jié)構(gòu),這種數(shù)據(jù)結(jié)構(gòu)便于使用和管理數(shù)據(jù)集合载弄。切片是圍繞動(dòng)態(tài)數(shù)組的概念構(gòu)建的耘拇,可以按需自動(dòng)增長(zhǎng)和縮小。切片的動(dòng)態(tài)增長(zhǎng)是通過(guò)內(nèi)置函數(shù)append來(lái)實(shí)現(xiàn)的宇攻。這個(gè)函數(shù)可以快速且高效地增長(zhǎng)切片惫叛。還可以通過(guò)對(duì)切片再次切片來(lái)縮小一個(gè)切片的大小。因?yàn)榍衅牡讓觾?nèi)存也是在連續(xù)塊中分配的逞刷,所有切片還能獲得索引嘉涌、迭代以及為垃圾回收優(yōu)化的好處。

切片有 3 個(gè)字段的數(shù)據(jù)結(jié)構(gòu)夸浅,這些數(shù)據(jù)結(jié)構(gòu)包含 Go 語(yǔ)言需要操作底層數(shù)組的元數(shù)據(jù)仑最。這 3 個(gè)字段分別是指向底層數(shù)組的指針、切片訪問(wèn)的元素的個(gè)數(shù)(即長(zhǎng)度)和切片允許增長(zhǎng)到的元素個(gè)數(shù)(即容量)题篷。

使用內(nèi)置的make函數(shù)創(chuàng)建切片時(shí)词身,需要傳入一個(gè)參數(shù),指定切片的長(zhǎng)度.如果只指定長(zhǎng)度番枚,那么切片的容量和長(zhǎng)度相等法严。也可以分別制定長(zhǎng)度和容量,創(chuàng)建的切片葫笼,底層數(shù)組的長(zhǎng)度是指定的容量深啤,但是初始化后并不能訪問(wèn)所有的數(shù)組元素。不允許創(chuàng)建容量小于長(zhǎng)度的切片路星,容量小于長(zhǎng)度的切片會(huì)在編譯時(shí)報(bào)錯(cuò)溯街。

如果在[]運(yùn)算符里指定了一個(gè)值,那么創(chuàng)建的就是數(shù)組而不是切片洋丐。只有不指定值的時(shí)候呈昔,才會(huì)創(chuàng)建切片。

第 64 頁(yè)

切片之所以被稱為切片友绝,是因?yàn)閯?chuàng)建一個(gè)新的切片就是把底層數(shù)組切出一部分堤尾。

第 66 頁(yè)

函數(shù)append總是會(huì)增加新切片的長(zhǎng)度,而容量有可能會(huì)改變迁客,也可能不會(huì)改變郭宝,這取決于被操作的切片的可用容量辞槐。

第 68 頁(yè)

函數(shù)append會(huì)智能地處理底層數(shù)組的容量增長(zhǎng)。在切片的容量小于 1000 個(gè)元素時(shí)粘室,總是會(huì)成倍地增加容量榄檬。一旦元素個(gè)數(shù)超過(guò) 1000,容量的增長(zhǎng)因子會(huì)設(shè)為 1.25衔统,也就是會(huì)每次增加 25% 的容量鹿榜。隨著語(yǔ)言的演化,這種增長(zhǎng)算法可能會(huì)有所改變缰冤。

第 75 頁(yè)

在函數(shù)間傳遞切片就是要在函數(shù)間以值的方式傳遞切片犬缨。由于切片的尺寸很小,在函數(shù)間復(fù)制和傳遞切片成本也很低棉浸。

在 64 位架構(gòu)的機(jī)器上怀薛,一個(gè)切片需要 24 字節(jié)的內(nèi)存:指針字段需要 8 字節(jié),長(zhǎng)度和容量字段分別需要 8 字節(jié)迷郑。由于與切片關(guān)聯(lián)的數(shù)據(jù)包含在底層數(shù)組里枝恋,不屬于切片本身,所以將切片復(fù)制到任意函數(shù)的時(shí)候嗡害,對(duì)底層數(shù)組大小都不會(huì)有影響焚碌。復(fù)制時(shí)只會(huì)復(fù)制切片本身,不會(huì)涉及底層數(shù)組霸妹。

第 78 頁(yè)

切片十电、函數(shù)以及包含切片的結(jié)構(gòu)類型這些類型由于具有引用語(yǔ)義,不能作為映射的鍵叹螟,使用這些類型會(huì)造成編譯錯(cuò)誤鹃骂。

第 83 - 84 頁(yè)

Go 語(yǔ)言是一種靜態(tài)類型的編程語(yǔ)言,意味著編譯器需要在編譯時(shí)知曉程序里每個(gè)值的類型罢绽。

值的類型給編譯器提供兩部分信息:一畏线,需要分配多少內(nèi)存給這個(gè)值(即值的規(guī)模);二良价,這段內(nèi)存表示什么寝殴。對(duì)于許多內(nèi)置類型的情況來(lái)說(shuō),規(guī)模和表示是類型名的一部分明垢。int64 類型的值需要 8 字節(jié)(64 位)蚣常,表示一個(gè)整數(shù)值;float32類型的值需要 4 字節(jié)(32 位)痊银,表示一個(gè) IEEE-754 定義的二進(jìn)制浮點(diǎn)數(shù)史隆;bool類型的值需要 1 字節(jié)(8 位),表示布爾值 truefalse曼验。

有些類型的內(nèi)部表示與編譯代碼的機(jī)器的體系結(jié)構(gòu)有關(guān)泌射。例如,根據(jù)編譯所在的機(jī)器的體系結(jié)構(gòu)鬓照,一個(gè) int值的大小可能是 8 字節(jié)(64 位)熔酷,也可能是 4 字節(jié)(32 位)。還要一些與體系結(jié)構(gòu)相關(guān)的類型豺裆,如 Go 語(yǔ)言里的所有引用類型拒秘。

使用 var 創(chuàng)建一個(gè)變量并初始化其為零值。如果變量被初始化為某個(gè)非零值臭猜,就配合結(jié)構(gòu)字面量和短變量聲明操作符來(lái)創(chuàng)建變量躺酒。

一個(gè)短變量聲明操作符在一次操作中完成兩件事情:聲明一個(gè)變量,并初始化蔑歌。

第 88 頁(yè)

Go 語(yǔ)言里有兩種類型的接收者:值接收者和指針接收者羹应。

第 90 - 92 頁(yè)

Go 語(yǔ)言既允許使用值,也允許使用指針來(lái)調(diào)用方法次屠,不必嚴(yán)格符合接收者的類型园匹。這個(gè)支持非常方便開(kāi)發(fā)者編寫(xiě)程序。

內(nèi)置類型分別是數(shù)值類型劫灶、字符串類型布爾類型裸违。這些類型本質(zhì)上是原始的類型。因此本昏,當(dāng)對(duì)這些值進(jìn)行增加或者刪除的時(shí)候供汛,會(huì)創(chuàng)建一個(gè)新值∮磕拢基于這個(gè)結(jié)論怔昨,當(dāng)把這些類型的值傳遞給方法或者函數(shù)時(shí),應(yīng)該傳遞一個(gè)對(duì)應(yīng)值的副本蒲犬。

引用類型切片朱监、映射通道原叮、接口函數(shù)類型赫编。當(dāng)聲明上述類型的變量時(shí),創(chuàng)建的變量被稱為標(biāo)頭(header)值奋隶。從技術(shù)細(xì)節(jié)上說(shuō)擂送,字符串也是一種引用類型。每個(gè)引用類型創(chuàng)建的標(biāo)頭值是包含一個(gè)指向底層數(shù)據(jù)結(jié)構(gòu)的指針唯欣。每個(gè)引用類型還包含一組獨(dú)特的字段嘹吨,用于管理底層數(shù)據(jù)結(jié)構(gòu)。因?yàn)闃?biāo)頭值是為復(fù)制而設(shè)計(jì)的境氢,所以永遠(yuǎn)不需要共享一個(gè)引用類型的值蟀拷。標(biāo)頭值里包含一個(gè)指針碰纬,因此通過(guò)復(fù)制來(lái)傳遞一個(gè)引用類型的值的副本,本質(zhì)上就是在共享底層數(shù)據(jù)結(jié)構(gòu)问芬。

第 122 頁(yè)

Go 語(yǔ)言里的并發(fā)指的是能讓某個(gè)函數(shù)獨(dú)立于其他函數(shù)運(yùn)行的能力悦析。當(dāng)一個(gè)函數(shù)創(chuàng)建為 goroutine 時(shí),Go 會(huì)將其視為一個(gè)獨(dú)立的工作單元此衅。這個(gè)單元會(huì)被調(diào)度到可用的邏輯處理器上執(zhí)行强戴。Go 語(yǔ)言運(yùn)行時(shí)的調(diào)度器是一個(gè)復(fù)雜的軟件,能管理被創(chuàng)建的所有 goroutine 并為其分配執(zhí)行時(shí)間挡鞍。這個(gè)調(diào)度器在操作系統(tǒng)之上骑歹,將操作系統(tǒng)的線程與語(yǔ)言運(yùn)行時(shí)的邏輯處理器綁定,并在邏輯處理器上運(yùn)行 goroutine墨微。調(diào)度器在任何給定的時(shí)間道媚,都會(huì)全面控制哪個(gè) goroutine 要在哪個(gè)邏輯處理器上運(yùn)行。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末欢嘿,一起剝皮案震驚了整個(gè)濱河市衰琐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌炼蹦,老刑警劉巖羡宙,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異掐隐,居然都是意外死亡狗热,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門虑省,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)匿刮,“玉大人,你說(shuō)我怎么就攤上這事探颈∈焱瑁” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵伪节,是天一觀的道長(zhǎng)光羞。 經(jīng)常有香客問(wèn)我,道長(zhǎng)怀大,這世上最難降的妖魔是什么纱兑? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮化借,結(jié)果婚禮上潜慎,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好铐炫,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布垒手。 她就那樣靜靜地躺著,像睡著了一般驳遵。 火紅的嫁衣襯著肌膚如雪淫奔。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,255評(píng)論 1 308
  • 那天堤结,我揣著相機(jī)與錄音,去河邊找鬼鸭丛。 笑死竞穷,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鳞溉。 我是一名探鬼主播瘾带,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼熟菲!你這毒婦竟也來(lái)了看政?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤抄罕,失蹤者是張志新(化名)和其女友劉穎允蚣,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體呆贿,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嚷兔,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了做入。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片冒晰。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖竟块,靈堂內(nèi)的尸體忽然破棺而出壶运,到底是詐尸還是另有隱情,我是刑警寧澤浪秘,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布蒋情,位于F島的核電站,受9級(jí)特大地震影響秫逝,放射性物質(zhì)發(fā)生泄漏恕出。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一违帆、第九天 我趴在偏房一處隱蔽的房頂上張望浙巫。 院中可真熱鬧,春花似錦、人聲如沸的畴。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)丧裁。三九已至护桦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間煎娇,已是汗流浹背二庵。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留缓呛,地道東北人催享。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像哟绊,于是被迫代替她去往敵國(guó)和親因妙。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容