How to parse a string into a net.Addr in Golang
How to Parse a string into a net.Addr in Golang
In this article we are going to see how to parse a simple Go string into a Golang net.Addr type. First let’s have a look at the net.Addr type and how it looks like
type Addr interface {
Network() string // name of the network (for example, "tcp", "udp")
String() // string form of address (for example, "192.0.2.1:25", "[2001:db8::1]:80") }
The net.Addr is just an interface, so any type that satisfies this interface is a valid net.Addr. Valid examples of this are
They all implement the net.Addr interface because they have the Network
and String
methods. If you take note, all of thee types have a function to parse a string into their concrete type. For net.UDPAddr we have net.ResolveUDPAddr, for net.TCPAddr we have net.ResolveTCPAddr and for net.IPAddr we have net.ResolveIPAddr
How to parse string into net.TCPAddr
By using the function from the standard library for net.TCPAddr, net.ResolveTCPAddr as illustrated below
func ResolveTCPAddr(network, address string) *TCPAddr, error
Please check how to use net.ResolveTCPAddr in the example below
package main
import (
"fmt"
"net"
)
func main() {
addr, err := net.ResolveTCPAddr("tcp", "1.1.1.1:1234")
if err != nil {
panic(err)
}
fmt.Println("Addr", addr.String())
}
You can run the code yourself by using the Go playground https://go.dev/play/p/ukobauySIbe
How to parse string into net.TCPAddr
By using the function from the standard library for net.UDPAddr, net.ResolveUDPAddr as illustrated below
func ResolveUDPAddr(network, address string) *UDPAddr, error
Please check how to use net.ResolveUDPAddr in the example below
package main
import (
"fmt"
"net"
)
func main() {
addr, err := net.ResolveUDPAddr("tcp", "1.1.1.1:53")
if err != nil {
panic(err)
}
fmt.Println("Addr", addr.String())
}
You can run the code yourself by using the Go playground https://go.dev/play/p/d2toJPjtXiN
How to parse string into net.IPAddr
By using the function from the standard library for net.IPAddr, net.ResolveIPAddr as illustrated below
func ResolveIPAddr(network, address string) *IPAddr, error
Please check how to use net.ResolveIPAddr in the example below
package main
import (
"fmt"
"net"
)
func main() {
addr, err := net.ResolveIPAddr("ip", "1.1.1.1")
if err != nil {
panic(err)
}
fmt.Println("Addr", addr.String())
}
You can run the code yourself by using the Go playground https://go.dev/play/p/PM-KOzep-ty