之前在逛部落格時,看到了這個問題,在for range 時,取切片的乙個問題,開始沒有仔細想,後來有同時在這裡出了乙個bug,這才搜了一下這個問題。
可看下面的test:
func testarray(t *testing.t)
mymap := make(map[int]*int)
for index, value := range slice2
for key, val := range mymap
}
輸出如下所示:
erro[0004] index 0 value 0,prt 0xc000eee978
erro[0004] index 1 value 1,prt 0xc000eee978
erro[0004] index 2 value 2,prt 0xc000eee978
erro[0004] index 3 value 3,prt 0xc000eee978
erro[0004] mymap key:0,value:3
erro[0004] mymap key:1,value:3
erro[0004] mymap key:2,value:3
erro[0004] mymap key:3,value:3
對於for range 可以進行如下變形:
func testarray(t *testing.t)
mymap := make(map[int]*int)
var index, value int
for index, value = range slice2
for key, val := range mymap
}
index,value 都只有乙個位址,在range 的過程中,將 切片的值不停的賦值給 value上。在range的過程中,mymap 中的key 都對應同乙個變數的位址,其值自然不會變 Python的乙個坑
今天發現了python乙個坑。我們知道python中函式跟c 一樣,可以設定預設引數,比如 def func x,y 1 print x,y func x 10 10 1 y有乙個預設值1,所以函式呼叫的結果是列印10 1 但是如果預設值是這樣的 class food def init self s...
ImmersionBar的乙個坑
今天寫 時發現殺掉activitya 1後再啟動activitya 2時,因為activitya 2的immersionbar先初始化了,之後activitya 1的ondestroy才執行,而關鍵點是發現ondestroy中確實是需要殺掉的activitya 1,而immersionbar也不是單...
isinstance的乙個坑
在使用unittest的時候,用到了assertisinstance方法,該方法呼叫了isinstance方法,現有兩個檔案中的兩個類 test c a.py classa pass test c b.py from a import a class b a pass其中目錄結構如下 test c ...