package main import ( "fmt" "net" "io/ioutil" "strings" ) type DomainMap struct { Domain string IpMapping string } func retrieveDomains() []string { file_in, _ := ioutil.ReadFile("domains.txt") domain_list := string(file_in) return strings.Split(strings.TrimSpace(domain_list), "\n") } func domainLookup(domain string) DomainMap { rawIpAddresses, _ := net.LookupIP(domain) // If any found, grab only the first address for simplicity as the ip lookup can return an array ipAddress := "" if len(rawIpAddresses) > 0 { ipAddress = rawIpAddresses[0].String() } fmt.Println("Mapping: ", domain, "->", ipAddress) return DomainMap{domain, ipAddress} } func main() { domains := retrieveDomains() var domainMapping []DomainMap // Send our requests, one for each domain we get in their // own goroutine for _, domain := range domains { domainMapping = append(domainMapping, domainLookup(domain)) } fmt.Println(domainMapping) }