-
好難,感覺好難用
查看全部 -
本節(jié)要點(diǎn):?如果對(duì)一個(gè)?nil channel?進(jìn)行讀和寫操作會(huì)進(jìn)入永久阻塞,
查看全部 -
var?numbers3?=?[5]int{1,?2,?3,?4,?5} var?slice1?=?numbers3[1:4]
請(qǐng)注意第二條賦值語句中在“=”右邊那個(gè)部分。切片表達(dá)式一般由字符串、數(shù)組或切片的值以及由方括號(hào)包裹且由英文冒號(hào)“:”分隔的兩個(gè)正整數(shù)組成。這兩個(gè)正整數(shù)分別表示元素下界索引和元素上界索引。
在本例中,切片表達(dá)式
numbers3[1:4]
的求值結(jié)果為[]int{2, 3, 4}
??梢姡衅磉_(dá)式的求值結(jié)果相當(dāng)于以元素下界索引和元素上界索引作為依據(jù)從被操作對(duì)象上“切下”而形成的新值。注意,被“切下”的部分不包含元素上界索引指向的元素。查看全部 -
原生支持并發(fā)編程
查看全部 -
errors.New
是一個(gè)很常用的函數(shù)。查看全部 -
請(qǐng)注意,如果一條
select
語句中不存在default case
, 并且在被執(zhí)行時(shí)其中的所有case
都不滿足執(zhí)行條件,那么它的執(zhí)行將會(huì)被阻塞!當(dāng)前流程的進(jìn)行也會(huì)因此而停滯。直到其中一個(gè)case
滿足了執(zhí)行條件,執(zhí)行才會(huì)繼續(xù)。我們一直在說case
執(zhí)行條件的滿足與否取決于其操作的通道在當(dāng)時(shí)的狀態(tài)。這里特別強(qiáng)調(diào)一點(diǎn),即:未被初始化的通道會(huì)使操作它的case
永遠(yuǎn)滿足不了執(zhí)行條件。對(duì)于針對(duì)它的發(fā)送操作和接收操作來說都是如此。查看全部 -
只能用于通道
查看全部 -
?? 另外,還有一點(diǎn)需要大家注意,我們?cè)诨最愋偷闹瞪先匀豢梢哉{(diào)用它的指針方法。例如,若我們有一個(gè)
Person
類型的變量bp
,則調(diào)用表達(dá)式bp.Grow()
是合法的。這是因?yàn)?,如果Go語言發(fā)現(xiàn)我們調(diào)用的Grow
方法是bp
的指針方法,那么它會(huì)把該調(diào)用表達(dá)式視為(&bp).Grow()
。實(shí)際上,這時(shí)的bp.Grow()
是(&bp).Grow()
的速記法。查看全部 -
只要我們把
Grow
變回指針方法就可以解決這個(gè)問題。原因是,這時(shí)的person
代表的是p
的值的指針的副本。指針的副本仍會(huì)指向p
的值。另外,之所以選擇表達(dá)式person.Age
成立,是因?yàn)槿绻鸊o語言發(fā)現(xiàn)person
是指針并且指向的那個(gè)值有Age
字段,那么就會(huì)把該表達(dá)式視為(*person).Age
。其實(shí),這時(shí)的person.Age
正是(*person).Age
的速記法。查看全部 -
的指針方法
查看全部 -
是典型的無侵入式的接口實(shí)現(xiàn)方法。
查看全部 -
- 當(dāng)
*
出現(xiàn)在一個(gè)類型之前(如*Person
和*[3]string
)時(shí)被視為一個(gè)符號(hào)- 類似C語言
查看全部 -
//鍵入的數(shù)>通道長度,timeout
//直接輸出通道,不接收;為地址
//cc := <- ch3 接收的值大于有的數(shù),timeout
查看全部 -
slice(1:3)
前面的下標(biāo)從0開始后面的下標(biāo)從1開始
查看全部 -
go命令教程:https://github.com/hyper-carrot/go_command_tutorial
查看全部
舉報(bào)