-1
我有类似下面下列类型结构:可能追加方法添加到切片
type Set []*Element
func (set *Set) AppendElements(elements []*Elements) {
// ?
}
显然只是附加元素,片是不是非常有用。然而,实际的功能需要一些价值,做一些业务逻辑,然后追加元素。然而,我面临的困难是对方法内部的slice进行修改,以便实际上不会将片的值更改为外部调用者,因为append方法会分配一个调用者看不到的新片。
有没有办法追加到切片的方法,或者应该切片包裹在一个结构或别的东西?
package main
import "fmt"
type Element int
type Set []*Element
func (ptr *Set) AppendElements(elements []*Element) {
set := *ptr
set = append(set, elements...)
}
func main() {
i := Element(1)
var set Set
set.AppendElements([]*Element{&i})
for _, el := range set {
fmt.Println(el)
}
}
更具体地说,上面不打印任何东西。
你有一个'* Set'指针,这样你就可以修改它。这将有助于说明你如何管理,而不是修改它。 – JimB
@JimB追加函数不适用于指针。一个可运行的示例已发布。 – xaav