從切片中刪除指定元素
廢話不多說直接上**
package main
import
("fmt"
)var datas [
]int
var filter int
func
init()
func
main()
// 從recordeddatas 刪除filter中的指定的元素
func
filterdata
(recordeddatas [
]int
, filter int)}
}
輸出
datas: [22 33 44 44]
輸出結果應該是這樣的才對啊:
res: [33 44]
切片型別作為引用型別,引用型別在函式間的傳遞的是變數的位址,然而這個位址其實也是乙個值。
所以函式中的recordeddatas引數和全域性變數datas指向了同乙個底層陣列
recordeddatas =
(recordeddatas[
:i], recordeddatas[i+1:
]...
)
這段**的意圖就是想每一次迴圈就將filter中的指定元素從recordeddatas中刪除,
問題就出現在該**中:
當迴圈第一次進入到該**中時上述**可以替換為
recordeddatas =
(recordeddatas[:0
], recordeddatas[0+
1:]...
)
recordeddatas = [22 33 44]
下圖debug為證:
我所遇見的坑(一)
class father class children 真正的 要比這個複雜,例項化是巨集來呼叫的,所以我看了老半天,還是找不到 出錯了。因為用的codeblock,編譯過程中輸出的都是英文,沒有仔細看。後來看了vs編譯,發現有提示哪個虛函式沒有實現,這才想到看codeblock編譯輸出的結果。這是...
關於Go的可變引數的使用 我踩的坑
package main import log func main func print str string,s inte ce 自己寫了乙個print函式,想通過傳遞多個引數,print接收之後列印,但是結果如下 顯然沒有符合預期,本來想依次列印1,2,3,4,5 結果第乙個 d講整個inte ...
Java的序列化和反序列化,我所遇到的坑
有時需要為物件做持久化,就是把記憶體裡的物件儲存到磁碟 暫且叫做磁碟吧,可以等同於sp db 檔案 網路等 上,等以後需要這個物件的時候再從磁碟上還原到記憶體,因此需要序列化和反序列化。如果使用objectoutputstream方式序列化,可能出現的坑如下 坑1 類裡面一定要serialversi...