「本文已参与好文召集令活动,点击查看:后端、大前端双赛道投稿,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