oinume journal

Scratchpad of what I learned

Satisfying a large interface quickly in Go

Sometimes it's painful to safisfy a large interface in Go. Here is a simple answer for this, just embed interface on struct. The sample code is bellow:

package main

import (

type Foo interface {

type FooImpl struct {

func (fi *FooImpl) MethodA() {
    fmt.Println("MethodA called")

func main() {
    foo := new(FooImpl)
    foo.MethodA() // Implemented
    foo.MethodB() // Not implemented, runtime error will happen

You can check the result on https://play.golang.org/p/0y8ICTWCfpy.

  • MethodA called is printed
  • And then a runtime error happens by calling foo.MethodB

I guess this technique is useful in unit test.