給定一個類型,例如:type LicenseCards struct { cards *[]int}我不會展示創建切片的代碼。但這刪除了最上面的項目,忽略了零長度的情況。func (licenseCards *LicenseCards) PopLicenseCard() int { l := len(*licenseCards.cards) ret := (*licenseCards.cards)[l-1] *licenseCards.cards = (*licenseCards.cards)[:l-1] return ret}如果我從切片中刪除最后一項并返回指向已刪除項的指針,是否保證它仍然可用?
1 回答

慕桂英4014372
TA貢獻1871條經驗 獲得超13個贊
如果有東西正在使用內存,GC 將不會釋放它。
您的代碼的另一點是,在使用 . 運營商例如:只需這樣做:l := len(licenseCards.cards)。
此外,您不需要卡片和接收器都是指針。如果你不介意我想建議這個:
type LicenseCards struct {
cards []int
}
func (lc *LicenseCards) PopLicenseCard() int {
l := len(lc.cards)
ret := lc.cards[l-1]
lc.cards = lc.cards[:l-1]
return ret
}
- 1 回答
- 0 關注
- 99 瀏覽
添加回答
舉報
0/150
提交
取消