我正在嘗試將字符串值與切片中的值進行比較,在我的例子中切片是tagsList。我必須在這個比較上做一些功能。請找到我下面的代碼。 var taglistlength = len(tagsList) var tagFlag bool var i int var reEmplKey string type saveDetails struct { BankID string `json:"bankID"` LocalGradeDescr string `json:"localGradeDescr"` RegularTemporary string `json:"regularTemporary"` } var tagsList = make([]saveDetails, 0) reEmplKey = "ID00001" tagsList = [{ID00001 Band 9 B PERMANENT}{ID00002 Band 8 C PERMANENT}{ID00003 Band 7 C Temporary}] fmt.Println("taglistlength : ",taglistlength) for i = 0; i <= taglistlength; i++{ fmt.Println("tagsList : ",tagsList) if (taglistlength == 0){ tagFlag = true fmt.Println("1st condition : ",tagFlag) } else if (taglistlength > 0 && tagsList[i].BankID ==reEmplKey){ tagFlag = false fmt.Println("2nd condition : ",tagFlag) } else if (taglistlength > 0 && tagsList[i].BankID !=reEmplKey){ tagFlag = false fmt.Println("3rd condition : ",tagFlag) }else{ fmt.Println("error") } } if (tagFlag == true){ //do some operation }執行此代碼時出現以下錯誤: panic: runtime error: index out of range panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x1 addr=0x30 pc=0x8ca606]它在第一次循環中正確執行并在第二次循環中顯示錯誤。請在下面找到我的輸出: taglistlength : 0 tagsList : [] 1st condition : true taglistlength : 1 tagsList : [{1000000 Band 9 B PERMANENT }] 3rd condition : false tagsList : [{1000000 Band 9 B PERMANENT }] panic: runtime error: index out of range panic: runtime error: invalid memory address or nil pointer dereference請幫我解決這個問題。我知道我犯了一些愚蠢的邏輯錯誤,但我無法弄清楚問題所在。如果我能得到工作代碼,那將非常有幫助。
1 回答
一只斗牛犬
TA貢獻1784條經驗 獲得超2個贊
這個代碼塊中有幾個錯誤,所以讓我們開始吧:
首先你需要在這一行之后
taglistlength?再次tagsList = [{ID00001 Band 9 B PERMANENT}{ID00002 Band 8 C PERMANENT}{ID00003 Band 7 C Temporary}]定義你的。我相信該行在錯誤的位置,因為您甚至tagList在那行之后定義,如果是這樣,請編輯您的問題。您必須做
i<taglistLength,而不是<=。在 Go 中,數組是從 0 開始索引的,因此等于數組長度的索引是越界的。如果您想安全起見,可以這樣做
for _,tag:= range tagsList{ ...}。這是一個foreach塊?,F在你可以使用taginstead of 了。tagList[i]很多人反對使用它,但它仍然是一個選擇。它還可以防止越界錯誤。您不需要檢查
tagListLength>0每個else if塊。第一個足以滿足您的邏輯。這只是一個建議。
所以最后,要么使用foreachgolang 版本,要么將你的條件修改為i<taglistLength,并確保你taglistLength在正確的行初始化。
- 1 回答
- 0 關注
- 182 瀏覽
添加回答
舉報
0/150
提交
取消
