Skip to content

Instantly share code, notes, and snippets.

@danimal141
Last active November 25, 2024 13:44
Show Gist options
  • Save danimal141/040a3d03598a6a51553a7a839f9d2d5a to your computer and use it in GitHub Desktop.
Save danimal141/040a3d03598a6a51553a7a839f9d2d5a to your computer and use it in GitHub Desktop.
A Tour of Go Exercise: Stringers
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
Copy link

nerewarin commented May 3, 2022

func (i IPAddr) String() string {
	x := ""
	for _, s := range i {
		x = fmt.Sprintf("%v%v.", x, s)
	}
	return fmt.Sprintf("%v", x)
}

@svenjia
Copy link

svenjia commented Jun 2, 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]
}

@monkemon
Copy link

monkemon commented Jul 1, 2022

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
}

@monkemon
Copy link

monkemon commented Jul 1, 2022

ok i noticed my idea wasn't unique so thumbs up for everyone who did it likewise :D

@vojtaripa
Copy link

vojtaripa commented Nov 4, 2022

//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

@krapie
Copy link

krapie commented Dec 9, 2022

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

@MichelNHKuo
Copy link

MichelNHKuo commented Jun 20, 2023

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

@Max95Cohen
Copy link

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

@alexandrov-va
Copy link

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

@Fleyderer
Copy link

Fleyderer commented Nov 3, 2023

Hello from Pythonists ๐Ÿ˜Ž

func (ip IPAddr) String() string {
	return strings.Join(strings.Split(strings.Trim(fmt.Sprint([len(ip)]byte(ip)), "[]"), " "), ".")
}

@megadalp
Copy link

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), ".")
}

@pemaig
Copy link

pemaig commented Apr 17, 2024

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

@tejas-kr
Copy link

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

@warhammer327
Copy link

warhammer327 commented Oct 10, 2024

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

@priyanshoon
Copy link

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

@priyanshoon
Copy link

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