Skip to content

Instantly share code, notes, and snippets.

@maizy
Created January 4, 2021 11:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save maizy/4c9e1ee2fd768a793f4d1b9a60e63ff4 to your computer and use it in GitHub Desktop.
Save maizy/4c9e1ee2fd768a793f4d1b9a60e63ff4 to your computer and use it in GitHub Desktop.
git interface & struct embedding
package main
import "fmt"
type Resulter interface {
GetResult() string
}
type DefaultResulter struct {
Resulter
}
func (r *DefaultResulter) GetResult() string {
return "def result"
}
type IntResulter struct {
DefaultResulter
intRes int
}
func (r *IntResulter) GetResult() string {
res := fmt.Sprintf("int res = %d", r.intRes)
r.intRes = r.intRes + 2
return res
}
func main() {
d := DefaultResulter{}
println("d.Resulter == nil:", d.Resulter == nil)
println("d.GetResult():", d.GetResult())
println()
var r Resulter = &d
println("r Resulter = &d, r.GetResult():", r.GetResult())
println()
i := IntResulter{intRes: 42}
println("i.Resulter == nil:", i.Resulter == nil)
println("i.GetResult():", i.GetResult())
println("i.DefaultResulter.GetResult():", i.DefaultResulter.GetResult())
println("i.DefaultResulter.Resulter:", i.DefaultResulter.Resulter)
println()
var r2 Resulter = &i
println("r2 Resulter = &i, i.GetResult():", r2.GetResult())
println("r2.GetResult():", r2.GetResult())
println("r2.GetResult():", r2.GetResult())
println("r2.GetResult():", r2.GetResult())
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment