package main import "fmt" func main() { user := User{} // Set the group: groupSetter("admin", user) fmt.Println(user) } type User struct { Name string group string } // GetGroup returns the group the user belongs to. func (user *User) GetGroup() string { return user.group } func groupSetter(name string, user UserInterface) error { return user.SetGroup(name) } // type UserInterface interface { GetGroup() string SetGroup(name string) error }