我有數據結構:追加切片切片
type PosList []int
type InvertedIndex struct {
Capacity int
Len int
IndexList []PosList
}
我有Add方法問題:
func (ii *InvertedIndex) Add(posList PosList, docId int) {
if ii.Len == ii.Capacity {
newIndexList := make([]PosList, ii.Len, (ii.Capacity+1)*2)
for i := 0; i < ii.Len; i++ {
newIndexList[i] = make([]int, len(ii.IndexList[i]))
copy(newIndexList[i], ii.IndexList[i])
}
ii.IndexList = newIndexList
}
ii.IndexList = ii.IndexList[0 : ii.Len+2]
ii.IndexList[docId] = posList
return
}
或者,我嘗試這樣的:
func (ii *InvertedIndex) Add(posList PosList, docId int) {
if ii.Len == ii.Capacity {
newIndexList := make([]PosList, ii.Len, (ii.Capacity+1)*2)
copy(newIndexList, ii.IndexList)
ii.IndexList = newIndexList
}
ii.IndexList = ii.IndexList[0 : ii.Len+2]
ii.IndexList[docId] = posList
return
}
他們兩個都不行,可能有人可以解釋我該如何追加一個切片來構造這樣的結構。
他們怎麼不工作?你遇到了什麼錯誤?我想指出,如果你的'docId'參數不是內ii.Len'的'2兩個版本會產生恐慌;如果它保證是這樣的話,那麼只需使用'append()'可能會更好。 – Evan