46 lines
848 B
Go
46 lines
848 B
Go
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)
|
|
}
|
|
}
|