В данной инструкции показано, как получить 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, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»