Go interfaces
The following implements a DataModel, like Django’s Model class which requires
Validate and Save methods be implemented by whoever uses that Interface. The
problem is the Model. m object will be nil, because Model cannot access
the User due to the embedded Model struct within the User struct.
package main
import "fmt"
type DataModel interface {
Validate()
Save()
}
type Model struct {
DataModel
}
func (m *Model) Validate(){
fmt.Println("Validating..", m)
}
func (m *Model) Save(){
fmt.Println("Saving..", m)
}
type User struct {
name string
Model
}
func main(){
user := &User{name: "Benjamin"}
fmt.Println(user)
user.Validate()
user.Save()
}&{Benjamin {<nil>}}
Validating.. &{<nil>}
Saving.. &{<nil>}