IPv6 addresses for fields such as RemoteAddr from http.Request are in the format "[:: 1]: 53343"
So net.SplitHostPort works great:
package main import ( "fmt" "net" ) func main() { host1, port, err := net.SplitHostPort("127.0.0.1:5432") fmt.Println(host1, port, err) host2, port, err := net.SplitHostPort("[::1]:2345") fmt.Println(host2, port, err) host3, port, err := net.SplitHostPort("localhost:1234") fmt.Println(host3, port, err) }
Exit:
127.0.0.1 5432 <nil> ::1 2345 <nil> localhost 1234 <nil>
Glenn McElhoe Feb 25 '18 at 1:14 2018-02-25 01:14
source share