Golang interfaces, a pragmatic explanation for the programmer