Go言語(golang) publicsuffixパッケージを使ってドメインの分割
publicsuffix パッケージを使って FQDN の分割
package main import ( "fmt" "log" "net/url" "strings" "golang.org/x/net/publicsuffix" ) func main() { rawurl := "https://www.example.co.jp" u, err := url.Parse(rawurl) if err != nil { log.Fatal(err) } suffix, icann := publicsuffix.PublicSuffix(u.Host) // icann は有効なサフィックスかどうかを示す真偽値 if !icann { return } fmt.Println("suffix:", suffix) // suffix: co.jp tld := suffix sld := "" if index := strings.LastIndex(tld, "."); index != -1 { sld, tld = tld[:index], tld[index+1:] } domain := u.Host[:len(u.Host)-len(suffix)-1] subdomain := "" if index := strings.Index(domain, "."); index != -1 { subdomain, domain = domain[:index], domain[index+1:] } fmt.Println("sub domain:", subdomain) // sub domain: www fmt.Println("domain:", domain) // domain: example fmt.Println("second level domain:", sld) // second level domain: co fmt.Println("third level domain:", tld) // third level domain: jp }