How to known a function of a interface is not realized?


I just tried the following code in Go.

package main

type inter interface {
    aaa() int

type impl struct {

func main() {
    var a inter
    a = impl{}
    // how to check the function for interface `inter` is not realized?

It can be go build and go run. But will receive a panic like:

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0xffffffff addr=0x0 pc=0x8972c]

goroutine 1 [running]:
main.(*impl).aaa(0x40c018, 0x41a788, 0xb2ae0, 0x40c018)
    <autogenerated>:1 +0x2c
    /tmp/sandbox029518300/prog.go:15 +0x60

How can I know the is not realized.

asked on Stack Overflow Jan 3, 2020 by lzmhhh123 • edited Jan 3, 2020 by Flimzy

1 Answer


The variable a is of type inter, an interface, which is pointing to an impl. The struct impl has the inter interface embedded in it. That means exists, which actually means However in your code impl.inter is nil. To make it more clear:

var a inter
a=b // this will call, but b.inter is nil
answered on Stack Overflow Jan 3, 2020 by Burak Serdar

User contributions licensed under CC BY-SA 3.0