go_sandbox/internal/learning/stringers.go
2024-11-02 14:07:18 +03:00

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)
}
}