在 python 中,我可以通過定義__getitem__(). 我可以在 Go 中做類似的事情嗎?// What I mean is:type MySlice []MyItem// Definition of MySlice......func (s MySlice) getItem(i int) MyItem {}......// Access is overrided with calling getItem()item := ms[0] //calling ms.getItem(0)// Is this doable?
2 回答

慕仙森
TA貢獻1827條經驗 獲得超8個贊
你可以使用map類型做類似的事情。這是示例。
type MyItem struct {
name string
}
type MySlice map[int]MyItem
func (m MySlice) getItem(i int) MyItem {
return m[i]
}
func (m MySlice) setItem(i int, item MyItem) {
m[i] = item
}
func main() {
var items = MySlice{}
items.setItem(0, MyItem{"john"})
items[1] = MyItem{"doe"}
var item0 = items[0]
fmt.Println(item0.name)
var item1 = items.getItem(1)
fmt.Println(item1.name)
}
正如我們可以看到,該方式來設置和獲取item0和item1不同,但結果是一樣的。
// set data
items.setItem(0, item)
items[0] = item
// get data
item = items[0]
item = items.getItem(0)
- 2 回答
- 0 關注
- 212 瀏覽
添加回答
舉報
0/150
提交
取消