Hi, You would need to manually convert []implementation to []data. See https://play.golang.org/p/DdC8sEGi75-
On Wednesday, October 31, 2018 at 5:21:29 AM UTC+7, Yuri Shafet wrote: > > Hello, everyone. > Consider following code: > > package main > import "fmt" > > type implementation struct { > d []int} > > func (impl *implementation) getData() interface{} { > return impl.d} > > type phase struct{} > > type data interface { > getData() interface{}} > > func MakeIntDataPhase() *phase { > return &phase{}} > > func (p *phase) run(population []data) []data { > return nil} > > func main() { > var population []implementation > MyPhase := MakeIntDataPhase() > fmt.Println(MyPhase.run(population)) > } > > > When running following code in playground I got following error: > prog.go:30:25: cannot use population (type []implementation) as type []data > in argument to MyPhase.run > > If I understand correctly it is because slice of interface type cannot be > converted by the compiler to concrete type. > > > What is correct way in golang to implement functionality that is presented in > the example? > > When method argument defined using a slice of some interface, how I can pass > it a slice of a concrete type that implements the interface? > > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.