Last active
November 25, 2024 13:44
-
-
Save danimal141/040a3d03598a6a51553a7a839f9d2d5a to your computer and use it in GitHub Desktop.
A Tour of Go Exercise: Stringers
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"fmt" | |
"strings" | |
"strconv" | |
) | |
type IPAddr [4]byte | |
func (ip IPAddr) String() string { | |
s := make([]string, len(ip)) | |
for i, val := range ip { | |
s[i] = strconv.Itoa(int(val)) | |
} | |
return strings.Join(s, ".") | |
} | |
func main() { | |
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) | |
} | |
} |
nerewarin
commented
May 3, 2022
•
func (ip IPAddr)String() string {
var rt string
for _,v := range ip {
temp:=fmt.Sprint(v)
rt+=temp+"."
}
return rt[0:len(rt)-1]
}
my solution is punk, but i don't see a point id doing this in a loop:
func (ip IPAddr) String() string {
out:= fmt.Sprintf("%v.%v.%v.%v", ip[0], ip[1], ip[2], ip[3])
return out
}
ok i noticed my idea wasn't unique so thumbs up for everyone who did it likewise :D
//LINK: https://go.dev/tour/methods/18
package main
import "fmt"
type IPAddr [4]byte
// TODO: Add a "String() string" method to IPAddr.
func (ip IPAddr) String() string {
newIP := ""
for i:=0; i<3; i++{
newIP += fmt.Sprintf("%v",ip[i]) + "."
//fmt.Println(ip[i])
}
//FOR LAST ITTERATION:
newIP += fmt.Sprintf("%v",ip[3])
//NOW RETURN
return newIP
}
func main() {
//defines variable host which holds a MAP of IPs to names
hosts := map[string]IPAddr{
"loopback": {127, 0, 0, 1},
"googleDNS": {8, 8, 8, 8},
}
//now for each name, translate the hosts
for name, ip := range hosts {
fmt.Printf("%v: %v\n", name, ip)
}
}
RESULT:
loopback: 127.0.0.1
googleDNS: 8.8.8.8
package main
import "fmt"
type IPAddr [4]byte
// TODO: Add a "String() string" method to IPAddr.
func (ipAddr *IPAddr) String() string {
return fmt.Sprintf("%v.%v.%v.%v", ipAddr[0], ipAddr[1], ipAddr[2], ipAddr[3])
}
func main() {
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)
}
}
package main
import "fmt"
type IPAddr [4]byte
// TODO: Add a "String() string" method to IPAddr.
func (ip IPAddr) String() string {
ips := fmt.Sprintf("%v.%v.%v.%v", ip[0], ip[1], ip[2], ip[3])
return ips
}
func main() {
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)
}
}
package main
import "fmt"
type IPAddr [4]byte
// TODO: Add a "String() string" method to IPAddr.
func (i IPAddr) String() string {
return fmt.Sprintf("%v.%v.%d.%d", i[0], i[1], i[2], i[3])
}
func main() {
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)
}
}
package main
import "fmt"
type IPAddr [4]byte
// TODO: Add a "String() string" method to IPAddr.
func (ip IPAddr) String() (s string) {
for _, v := range ip {
s += fmt.Sprintf("%v.", v)
}
s = s[:len(s)-1]
return
}
func main() {
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)
}
}
Hello from Pythonists ๐
func (ip IPAddr) String() string {
return strings.Join(strings.Split(strings.Trim(fmt.Sprint([len(ip)]byte(ip)), "[]"), " "), ".")
}
Hello from Pythonists ๐
func (ip IPAddr) String() string { return strings.Join(strings.Split(strings.Trim(fmt.Sprint([len(ip)]byte(ip)), "[]"), " "), ".") }
Our respects from Perl devs too :))
func (ip IPAddr) String() string {
return strings.Join(regexp.MustCompile("\\d+").FindAllString(fmt.Sprint([len(ip)]byte(ip)), -1), ".")
}
package main
import (
"fmt"
"strconv"
)
type IPAddr [4]byte
func (ip IPAddr) String() string {
var str string
for i, v := range ip {
if convertedV := strconv.Itoa(int(v)); i == 0 {
str += convertedV
} else {
str += "." + convertedV
}
}
return str
}
func main() {
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)
}
}
Mine lol
package main
import "fmt"
type IPAddr [4]byte
// TODO: Add a "String() string" method to IPAddr.
func (ip_add IPAddr) String() string {
return fmt.Sprintf("%d.%d.%d.%d", ip_add[0],ip_add[1],ip_add[2],ip_add[3])
}
func main() {
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)
}
}
package main
import "fmt"
type IPAddr [4]byte
// TODO: Add a "String() string" method to IPAddr.
func (ip IPAddr) String() string {
return fmt.Sprintf("%v.%v.%v.%v\n", ip[0],ip[1], ip[2], ip[3])
}
func main() {
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)
}
}
package main import "fmt" type IPAddr [4]byte func (ip IPAddr) String() string { return fmt.Sprintf("%d.%d.%d.%d", ip[0], ip[1], ip[2], ip[3]) } func main() { hosts := map[string]IPAddr{ "loopback": {127, 0, 0, 1}, "googleDNS": {8, 8, 8, 8}, } for _, ip := range hosts { fmt.Println(ip.String()) } }
Nice answer, I couldn't think of it
package main
import "fmt"
type IPAddr [4]byte
// TODO: Add a "String() string" method to IPAddr.
func (ip IPAddr) String() string {
var ipFinal string = ""
for i := range ip {
if i < 3 {
ipFinal = ipFinal + fmt.Sprintf("%d", ip[i]) + "."
} else {
ipFinal = ipFinal + fmt.Sprintf("%d", ip[i])
}
}
return ipFinal
}
func main() {
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)
}
}
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment