I faced a strange behavior in Go structs. I might be misunderstanding something but when I created like so:
type ITest interface {
    Foo() string
    Bar(string)
}
type Base struct {
    value string
}
func (b Base) Foo () string {
    return b.value
}
func (b *Base) Bar (val string) {
    b.value = val
}
// Not implementing ITest
type Sub struct {
    Base
}
// Now it works
type Sub struct {
    *Base
}
Then Sub is not implementing ITest. But if I change Sub to embed pointer of Base it starts to implement ITest. I know it somehow related to caller in methods but come on. So the question is: Is that me Going wrong or Go have problems with embedding logic?
 
     
    