在 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条经验 获得超7个赞
你可以使用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 关注
- 178 浏览
添加回答
举报
0/150
提交
取消