Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot use interface methods when returned through function returning []Interface type #357

Open
Jackenmen opened this issue Jul 6, 2024 · 0 comments

Comments

@Jackenmen
Copy link

Reproduction steps:

  1. Run commands:
mkdir dum
cd dum
go mod init dummy.com/dum
mkdir hello
  1. Create file named hello/hello.go with following contents:
package hello

type Example interface {
    Sample() int
}

type ExampleImpl struct {
    sample int
}

func (example *ExampleImpl) Sample() int {
    return example.sample
}

func Hello() []Example {
    return []Example{&ExampleImpl{sample: 123}, &ExampleImpl{sample: 321}}
}
  1. Build with gopy:
gopy build -output=out dummy.com/dum/hello
  1. Run the following Python code:
>>> from out import hello
>>> output = hello.Hello()
>>> output[0].Sample()
panic: interface conversion: *hello.Example is not hello.Example: missing method Sample

goroutine 17 [running, locked to thread]:
main.hello_Example_Sample(0x2)
	/tmp/dum/out/hello.go:1230 +0xf9
zsh: IOT instruction (core dumped)  python
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant