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.

Reply via email to