「本文已參與好文召集令活動,點擊查看:後端、大前端雙賽道投稿,2萬元獎池等你挑戰!」前端
name=tom
name=jack
jack
age雖然在name以前,可是由於name是函數fmt.Sprintf的返回值,因此在初始化user的時候,會先處理成員變量是表達式的返回值的。golang
do something->do defer->panicjson
do something->do defer->return後端
json number反射到interface上,這時經過斷言爲int是錯誤的,此時interface斷言是float64。數組
i是臨時變量,當每一個goroutine搶着去打印i的時候,其結果是不肯定的,每一個gourotine運行到的時候,i當前是什麼,就打印什麼。markdown
能夠經過
if v,ok := x["two"]; ok
來判斷app
byte表示字節,一箇中文正常3個字節,rune用來表示Unicode的碼點,即一個字符。函數
當心nil != nil的陷阱。golang的interface是由兩個部分組成的,{Type, Value},a至關於
{nil,nil}
,b至關於{*int,nil}
,a天然不等於b。post
這裏其實會卡住,首先byte本質是uint8,最大值是255,當到達255後,先加1,就會發生溢出,回到0,因此這行代碼本質就是個
for{}
ui
經過定義能夠看出new返回的是指針,make返回的類型的值。make能夠是slice、map和chan,new能夠new一個類型。
最後一次append,原數組容量不夠,從新分配數組。地址變化。
在只有一個處理器的狀況下,即便一個goroutine是死循環,它也不會一直執行下去
無緩衝的chan,是同步阻塞的,必須存在某個時刻,在寫的同時,另外一個已經在準備接收了。帶緩衝的chan,在緩衝區沒滿的時候,是不阻塞的。
根據所需,選擇合理的類型,對GC友好。
因此以上會deadlock