package learning import "fmt" type Person struct { Name string Age int } func(p Person) String() string { return fmt.Sprintf("%v (%v years)", p.Name, p.Age) } func StringersLearnings(){ a := Person{"Arthur Dent", 42} z := Person{"Jopka Slona", 9001} fmt.Println(a, z) } // Stringer exercise - IP address type IPAddr [4]byte func (ip IPAddr) String() string { // Bruteforce way // return fmt.Sprintf("%v.%v.%v.%v", ip[0], ip[1], ip[2], ip[3]) // For-loop way result := "" for i := 0; i < len(ip); i++ { if i > 0 { result += "." } result += fmt.Sprintf("%v", ip[i]) } return result } func StringersExercise(){ hosts := map[string]IPAddr{ "loopback": {127, 0, 0, 1}, "googleDNS": {8, 8, 8, 8}, } for name, ip := range hosts { fmt.Printf("%v: %v\n", name, ip) } }