В данной инструкции показано, как получить IP адрес из доступных локальных сетевых интерфейсов.
Как выявить локальный IP адрес в Golang?
1. Создайте файл interfaces.go со следующим содержимым:
Рекомендуем вам супер TELEGRAM канал по Golang где собраны все материалы для качественного изучения языка. Удивите всех своими знаниями на собеседовании! 😎
Мы публикуем в паблике ВК и Telegram качественные обучающие материалы для быстрого изучения Go. Подпишитесь на нас в ВК и в Telegram. Поддержите сообщество Go программистов.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
package main import ( "fmt" "net" ) func main() { // Получаем все доступные сетевые интерфейсы interfaces, err := net.Interfaces() if err != nil { panic(err) } for _, interf := range interfaces { // Список адресов для каждого сетевого интерфейса addrs, err := interf.Addrs() if err != nil { panic(err) } fmt.Printf("Сетевой интерфейс: %s\n", interf.Name) for _, add := range addrs { if ip, ok := add.(*net.IPNet); ok { fmt.Printf("\tIP: %v\n", ip) } } } } |
2. Запустите код через go run interfaces.go в главном терминале;
3. Посмотрите на результат:
|
1 2 3 4 5 6 7 8 9 |
Сетевой интерфейс: lo IP: 127.0.0.1/8 IP: ::1/128 Сетевой интерфейс: enp8s0 Сетевой интерфейс: wlp7s0 IP: 192.168.0.21/24 IP: fe80::32e8:edef:4152:e0d2/64 Сетевой интерфейс: docker0 IP: 172.17.0.1/16 |
Сетевой пакет net содержит функцию Interfaces, которая возвращает список сетевых интерфейсов как срез структуры Interface. В структуре Interface есть метод Addrs, который возвращает список доступных IP-адресов текущего сетевого интерфейса из цикла for. В таком случае можно вывести на экран список IP-адресов по их сетевым интерфейсам.
Другой альтернативой является использование функции InterfaceAddrs из пакета net, что предоставляет срез структуры, которая имплементирует интерфейс Addrs. Вам предоставляются методы для получения нужной информации.

Администрирую данный сайт с целью распространения как можно большего объема обучающего материала для языка программирования Go. В IT с 2008 года, с тех пор изучаю и применяю интересующие меня технологии. Проявляю огромный интерес к машинному обучению и анализу данных.
E-mail: vasile.buldumac@ati.utm.md
Образование
Технический Университет Молдовы (utm.md), Факультет Вычислительной Техники, Информатики и Микроэлектроники
- 2014 — 2018 Universitatea Tehnică a Moldovei, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
- 2018 — 2020 Universitatea Tehnică a Moldovei, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»