gpt4 book ai didi

GoLang 约定 - 从 slice 创建自定义类型

转载 作者:IT老高 更新时间:2023-10-28 13:08:52 28 4
gpt4 key购买 nike

在 Golang 中从 slice 创建自己的类型是个好主意吗?

例子:

type Trip struct {
From string
To string
Length int
}

type Trips []Trip // <-- is this a good idea?

func (trips *Trips) TotalLength() int {
ret := 0
for _, i := range *trips {
ret += i.Length
}

return ret
}

在我的示例中创建像 Trips 这样的类型是 Golang 中的某种约定吗?还是在整个项目中使用 []Trip 更好?有什么优缺点吗?

最佳答案

据我所知,没有约定。如果你真的需要,创建一个 slice 类型是可以的。事实上,如果你想对数据进行排序,这几乎是唯一的方法:创建一个类型并定义 sort.Interface方法。

此外,在您的示例中,不需要获取 Trips 的地址,因为 slice 已经是一种“胖指针”。因此,您可以将方法简化为:

func (trips Trips) TotalLength() (tl int) {
for _, l := range trips {
tl += l.Length
}
return tl
}

关于GoLang 约定 - 从 slice 创建自定义类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31473429/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com