// simple_interface.go
package main

import (
	"fmt"
)

type Simpler interface {
	Get() int
	Put(int)
}

type Simple struct {
	i int
}

func (p *Simple) Get() int {
	return p.i
}

func (p *Simple) Put(u int) {
	p.i = u
}

func fI(it Simpler) int {
	it.Put(5)
	return it.Get()
}

func main() {
	var s Simple
	fmt.Println(fI(&s))  // &s is required because Get() is defined with a receiver type pointer
}
// Output: 5