這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
幾乎所有代碼都來自:
http://jan.newmarch.name/go/
感謝該作者
/* IP */package mainimport ("fmt""net""os")func main() {if len(os.Args) != 2 {fmt.Fprintf(os.Stderr, "Usage: %s ip-addr\n", os.Args[0])os.Exit(1)}name := os.Args[1]addr := net.ParseIP(name)if addr == nil {fmt.Println("Invalid address")} else {fmt.Println("The address is ", addr.String())}os.Exit(0)}
主要用到了net包。
os.Args是命令列參數
是個string的slice切片
net.ParseIP()顧名思意就是轉換成IP地址其實也就是把"192.168.1.1"這樣的字串轉換成go語言中ip的形式,go語言中ip是[]byte類型的,這事一個slice切片。這個程式或許沒多大用處,但是下面這個改過的版本可能有點用處:
/* IP */package mainimport ("fmt""net""os")func main() {if len(os.Args) != 2 {fmt.Fprintf(os.Stderr, "Usage: %s ip-addr\n", os.Args[0])os.Exit(1)}name := os.Args[1]//addr := net.ParseIP(name) addr, _:=net.LookupHost(name)if addr[0] == "" {fmt.Println("Invalid address")} else {fmt.Println("The address is "+addr[0])}os.Exit(0)}
編譯成功後:運行./ip www.baidu.com
得到結果:The address is 123.125.114.144
net.LookupHost() 查看網域名稱的ip地址,官方解釋是:LookupHost looks up the given host using the local resolver. It returns an array of that host's addresses.
嘿嘿