The package publicsuffix is a domain name parser, written in Go, and based on the Public Suffix List.
package main
import (
"fmt"
"github.com/weppos/publicsuffix-go/publicsuffix"
)
func main() {
// Extract the domain from a string
// using the default list
fmt.Println(publicsuffix.Domain("example.com")) // example.com
fmt.Println(publicsuffix.Domain("www.example.com")) // example.com
fmt.Println(publicsuffix.Domain("example.co.uk")) // example.co.uk
fmt.Println(publicsuffix.Domain("www.example.co.uk")) // example.co.uk
// Parse the domain from a string
// using the default list
fmt.Println(publicsuffix.Parse("example.com")) // &DomainName{"com", "example", ""}
fmt.Println(publicsuffix.Parse("www.example.com")) // &DomainName{"com", "example", "www"}
fmt.Println(publicsuffix.Parse("example.co.uk")) // &DomainName{"co.uk", "example", ""}
fmt.Println(publicsuffix.Parse("www.example.co.uk")) // &DomainName{"co.uk", "example", "www"}
}