-
GO語言 工作區(qū)和GOPATH(1)
查看全部 -
defer
攜帶的表達(dá)式語句代表的是對(duì)某個(gè)函數(shù)或方法的調(diào)用。這個(gè)調(diào)用可能會(huì)有參數(shù)傳入,比如:fmt.Print(i + 1)
。如果代表傳入?yún)?shù)的是一個(gè)表達(dá)式,那么在defer
語句被執(zhí)行的時(shí)候該表達(dá)式就會(huì)被求值了。注意,這與被攜帶的表達(dá)式語句的執(zhí)行時(shí)機(jī)是不同的。查看全部 -
如果在當(dāng)時(shí)有數(shù)據(jù)的通道多于一個(gè),那么Go語言會(huì)通過一種偽隨機(jī)的算法來決定哪一個(gè)
case
將被執(zhí)行。?另一方面,對(duì)于包含通道發(fā)送操作的
case
來講,其執(zhí)行條件就是通道中至少還能緩沖一個(gè)數(shù)據(jù)(或者說通道未滿)。類似的,當(dāng)有多個(gè)case
中的通道未滿時(shí),它們會(huì)被隨機(jī)選擇。該條
select
語句的兩個(gè)case
中包含的都是針對(duì)通道ch3
的發(fā)送操作。如果我們把這條語句置于一個(gè)循環(huán)中,那么就相當(dāng)于用有限范圍的隨機(jī)整數(shù)集合去填滿一個(gè)通道。如果一條
select
語句中不存在default case
, 并且在被執(zhí)行時(shí)其中的所有case
都不滿足執(zhí)行條件,那么它的執(zhí)行將會(huì)被阻塞!當(dāng)前流程的進(jìn)行也會(huì)因此而停滯。直到其中一個(gè)case
滿足了執(zhí)行條件,執(zhí)行才會(huì)繼續(xù)。未被初始化的通道會(huì)使操作它的
case
永遠(yuǎn)滿足不了執(zhí)行條件。對(duì)于針對(duì)它的發(fā)送操作和接收操作來說都是如此。
查看全部 -
一個(gè)指針類型擁有以它以及以它的基底類型為接收者類型的所有方法,而它的基底類型卻只擁有以它本身為接收者類型的方法。
查看全部 -
表達(dá)式
switch
語句類型
switch
語句
查看全部 -
但是當(dāng)
&
和*
作為地址操作符出現(xiàn)時(shí):
&的作用是取址,而*的作用是取值;
(更通俗地講,當(dāng)?shù)刂凡僮鞣ㄋ椎刂v,當(dāng)?shù)刂凡僮鞣?code>&被應(yīng)用到一個(gè)值上時(shí)會(huì)取出指向該值的指針值,而當(dāng)?shù)刂凡僮鞣?code>*被應(yīng)用到一個(gè)指針值上時(shí)會(huì)取出該指針指向的那個(gè)值。它們可以被視為相反的操作)
當(dāng)
*
出現(xiàn)在一個(gè)類型之前(如*Person
和*[3]string
)時(shí)就不能被看做是操作符了,而應(yīng)該被視為?"一個(gè)符號(hào)"?。如此組合而成的標(biāo)識(shí)符所表達(dá)的含義是作為第二部分的那個(gè)類型的指針類型。我們也可以把其中的第二部分所代表的類型稱為基底類型。例如,*[3]string
是數(shù)組類型[3]string
的指針類型,而[3]string
是*[3]string
的基底類型
-----------------------------------
注意,
Person
的兩個(gè)方法Grow
和Move
的接收者類型都是*Person
,而不是Person
。只要一個(gè)方法的接收者類型是其所屬類型的指針類型而不是該類型本身,那么我就可以稱該方法為一個(gè)指針方法。上面的Grow
方法和Move
方法都是Person
類型的“指針方法”(對(duì)應(yīng)傳的如果是所屬類型本身而不是所屬類型的指針)。查看全部 -
函數(shù)類型聲明的寫法;
函數(shù)值(即“函數(shù)”)的寫法;
如果結(jié)果聲明是帶名稱的,那么它就相當(dāng)于一個(gè)已被聲明但未被顯式賦值的變量。我們可以為它賦值且在
return
語句中省略掉需要返回的結(jié)果值查看全部 -
緩沖和非緩沖;
雙向與單向;
查看全部 -
暫存在通道值中的數(shù)據(jù)是先進(jìn)先出的,即:越早被放入(或稱發(fā)送)到通道值的數(shù)據(jù)會(huì)越先被取出(或稱接收).
針對(duì)通道值的接收操作也可以有第二個(gè)結(jié)果值,其更深層次的原因是,如果在接收操作進(jìn)行之前或過程中通道值被關(guān)閉了,則接收操作會(huì)立即結(jié)束并返回一個(gè)該通道值的元素類型的零值。按照上面的第一種寫法,我們無從判斷接收到零值的原因是什么。不過,有了第二個(gè)結(jié)果值之后,這種判斷就好做了。
查看全部 -
字典用于存儲(chǔ)鍵-元素對(duì)(更通俗的說法是鍵-值對(duì))的"無序集合"
查看全部 -
數(shù)組值的容量總是等于其長度;
切片值的容量即為它的第一個(gè)元素值在其底層數(shù)組中的索引值與該數(shù)組長度的差值的絕對(duì)值;
【切片屬于“引用類型”——其零值為nil】
查看全部 -
`&myDog` 是指針類型,所以它擁有它本身及以它的基底類型(Dog)為接收者類型(func (dog Dog))的方法,所以`&myDog`擁有 Name() 和 Age()方法,是實(shí)現(xiàn)了Pet接口的;`myDog`的基底類型`Dog`只擁有以它本身為接受者類型的方法,也是Age和Name;
當(dāng)將接受者類型改為(dog *Dog)時(shí),對(duì)于指針類型,擁有Both,所以為true,而此時(shí)對(duì)于myDog,它沒有以它本身為接受者類型的方法,所以為false。
查看全部 -
字符串的兩種表示法:
?原生表示法:反引號(hào)``,所見即所得,除了回車.
?解釋型表示法:雙引號(hào)"",轉(zhuǎn)義符會(huì)在程序編譯期間被轉(zhuǎn)義.
%q用于顯示字符串值的表象值
查看全部 -
go get:
-d : 只執(zhí)行下載動(dòng)作, 不執(zhí)行安裝動(dòng)作
-fix :在下載代碼包后先執(zhí)行修正動(dòng)作,而后再進(jìn)行編譯和安裝
-u : 利用網(wǎng)絡(luò)來更新已有的代碼包及其依賴包
查看全部 -
1 原生支持并發(fā),與函數(shù)庫有所區(qū)別查看全部
舉報(bào)