-
-
Save danimal141/040a3d03598a6a51553a7a839f9d2d5a to your computer and use it in GitHub Desktop.
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) | |
} | |
} |
ramesh-km
commented
Mar 29, 2021
@ramesh-km Same as @serotta58. I prefer the verb %d though as the quads are integers. ๐
One more approach:
func (ip IPAddr) String() string {
a := make([]interface{}, len(ip))
for i, x := range ip {
a[i] = x
}
return fmt.Sprintf("%d.%d.%d.%d", a...)
}
@kamre fmt.Sprintf("%d.%d.%d.%d", a...) results.
loopback: %!d(string=127).%!d(string=0).%!d(string=0).%!d(string=1)
googleDNS: %!d(string=8).%!d(string=8).%!d(string=8).%!d(string=8)
%v is fine.
I'm glad to know a ...
. ๐
func (v IPAddr) String() string {
s := fmt.Sprint(int(v[0]))
for i := 1; i < len(v); i++ {
s += "."
s += strconv.Itoa(int(v[i]))
}
return 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)
}
}
@takekazuomi
Works fine for me with %d
Playground link:
https://play.golang.org/p/f9y5SwXR5AM
i didnt check all answers for duplicate but this what i wrote ( it's a little too verbose XD) :
package main
import "fmt"
type IPAddr [4]byte
// TODO: Add a "String() string" method to IPAddr.
func (i IPAddr) String() string {
var result string
for index, value := range i {
if index == 0 {
result = fmt.Sprintf("%v", value)
continue
}
result = fmt.Sprintf("%v.%v", result, value)
}
return result
}
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)
}
}
I'm using append instead of concat string
package main
import (
"fmt"
"strings"
"strconv"
)
type IPAddr [4]byte
func (ip IPAddr) String() string {
s := make([]string, len(ip))
for _, v := range ip {
s = append(s, strconv.Itoa(int(v)))
}
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)
}
}
package main
import "fmt"
import "strconv"
type IPAddr [4]byte
// TODO: Add a "String() string" method to IPAddr.
func (p IPAddr) String() string {
return fmt.Sprintf("%s.%s.%s.%s", strconv.Itoa(int(p[0])), strconv.Itoa(int(p[1])), strconv.Itoa(int(p[2])), strconv.Itoa(int(p[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)
}
}
func (ip IPAddr) String() string {
//NESTED FOR-IF
var text string
for i, ipbyte := range ip {
if i == 3 {
text += fmt.Sprint(ipbyte)
} else {
text += fmt.Sprint(ipbyte)+"."
}
}
return text
//ONE ROW SOLUTION
return fmt.Sprintf("%v.%v.%v.%v", ip[0],ip[1],ip[2],ip[3] )
}
func (i IPAddr) String() string {
x := ""
for _, s := range i {
x = fmt.Sprintf("%v%v.", x, s)
}
return fmt.Sprintf("%v", x)
}
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)
}
}