Доброго дня. Создал маленькое приложение. Выдает в консоле имя компа и активные сетевые интерфейсы.
Хотел вывод перенести на окно. Что бы красиво было. Но вот значения полученных IP и интерфейсов не пойму как передать на label окна.
Не видит переменную (label) если ее вставлять в цикл for. Я совсем не программист. Решил для работы с клиентами упростить задачу. Что бы бабушки на линуксе быстро говорили эти данные для удаленки к ним.
Показать
package main
import (
"fmt"
"fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/widget"
"log"
"net"
"os"
"strings"
)
func main() {
// Получаем имя компьютера
hn, err := os.Hostname()
if err != nil {
log.Fatal(err)
}
// Создаем новое приложение
a := app.New()
// Создаем окно из а методом NewWindow с параметрами
w := a.NewWindow("Характеристики компьютера")
//Создали новый виджет метка
labelHostName := widget.NewLabel("Имя компьютера: " + hn)
labelIpUp := widget.NewLabel("IP Network")
// Пулучаем IP адресс
interfaces, err := net.Interfaces()
if err != nil {
log.Fatal(err)
}
for _, interf := range interfaces {
addrs, err := interf.Addrs()
if err != nil {
log.Fatal(err)
}
if strings.Contains(interf.Flags.String(), "up") && !strings.Contains(interf.Flags.String(), "loop") {
fmt.Println("######## АКТИВНЫЙ IP АДРЕС ############")
fmt.Printf("Сетевой интерфейс: %s\n", interf.Name)
for _, add := range addrs {
if ip, ok := add.(*net.IPNet); ok && !ip.IP.IsLoopback() {
fmt.Printf("\tIP: %v\n", ip)
//if ip.IP.To4() != nil {
// print available addresses
// fmt.Println(ip.IP.String())
//}
}
}
}
}
w.SetContent(container.NewVBox(
labelHostName,
labelIpUp,
))
w.ShowAndRun()
}
Может кто силен в golang