package main import "fmt" type Date struct { Year int Month int Day int } func (d Date) String() string { return fmt.Sprintf("%d/%d/%d", d.Month, d.Day, d.Year) } type Student struct { Name string ID string birthday Date } func (s Student) String() string { return fmt.Sprintf("<>", s.Name, s.ID, s.birthday) } func main() { d := Date{1996, 3, 4} fmt.Println(d) s1 := Student{"Mary", "123321", Date{2003, 2, 1}} fmt.Printf("%v\n%+v\n", s1, s1) s2 := Student{birthday: Date{2002, 3, 4}, ID: "654321", Name: "Gertrude"} fmt.Println(s2) mp := make(map[string]Student) mp[s2.ID] = s2 mp[s1.ID] = s1 fmt.Println(mp) }