Skip to content

Instantly share code, notes, and snippets.

@jniltinho
Created March 26, 2014 16:55
Show Gist options
  • Save jniltinho/9787946 to your computer and use it in GitHub Desktop.
Save jniltinho/9787946 to your computer and use it in GitHub Desktop.
Get My IP Golang
package main
/*
URL: https://github.com/mccoyst/myip/blob/master/myip.go
URL: http://changsijay.com/2013/07/28/golang-get-ip-address/
*/
import (
"net"
"os"
)
func main() {
addrs, err := net.InterfaceAddrs()
if err != nil {
os.Stderr.WriteString("Oops: " + err.Error() + "\n")
os.Exit(1)
}
for _, a := range addrs {
if ipnet, ok := a.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
if ipnet.IP.To4() != nil {
os.Stdout.WriteString(ipnet.IP.String() + "\n")
}
}
}
}
@pashok2398
Copy link

@jniltinho thanks it worked for me :)
@rucuriousyet in my case i have 2 addresses on same interface i think your solution will get only one of them....
Can someone explain line 21, didnt got the a.(*net.IPNet).
Thanks

@g10guang
Copy link

g10guang commented Dec 6, 2018

Might be easier to do something like this:

package main

import "net"

func main() {
    conn, err := net.Dial("udp", "8.8.8.8:80")
    // handle err...

     defer conn.Close()
     localAddr := conn.LocalAddr().(*net.UDPAddr)
}

This will give you the primary IP address used by your system (great for machines that have multiple ips, interfaces etc).

China cannot access google dns 8.8.8.8

@shilangyu
Copy link

Might be easier to do something like this:

package main

import "net"

func main() {
    conn, err := net.Dial("udp", "8.8.8.8:80")
    // handle err...

     defer conn.Close()
     localAddr := conn.LocalAddr().(*net.UDPAddr)
}

This will give you the primary IP address used by your system (great for machines that have multiple ips, interfaces etc).

China cannot access google dns 8.8.8.8

Does not matter, its a UDP connection therefore there is no handshake, works offline

@west0706
Copy link

Thanks! very simple and powerful!

@imbin
Copy link

imbin commented May 26, 2021

Thanks! very simple and powerful!

Copy link

ghost commented Feb 26, 2022

牛批的很

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment