Любая утилита командной строки начинается с умения принимать ввод от пользователя. Прежде чем отправлять ICMP-пакеты и визуализировать маршруты, нужно заложить фундамент: создать модуль, точку входа и научить программу понимать, что от неё хотят. На этом этапе мы создадим скелет GeoTracer, который принимает целевой хост через аргументы командной строки.
— срез строк, содержащий аргументы программы. Первый элемент (os.Args[0]) — путь к самой программе, остальные — аргументы от пользователя.
if len(os.Args) < 2 { fmt.Fprintf(os.Stderr, "Usage: %s <hostname>\n", os.Args[0]) os.Exit(1) } target := os.Args[1]
💡 Gotcha: Не путайте
os.Argsсflag.Args().os.Argsсодержит все аргументы включая флаги, аflag.Args()— только позиционные аргументы после парсинга флагов. На этом этапе мы используемos.Args, а на позднем — переключимся наflag.
Создать базовую структуру проекта и парсинг аргументов.
Что необходимо сделать:
Инициализировать Go-модуль geotracer в директории проекта.
Файл main.go — точка входа:
Логика:
$ go run main.go google.com Целевой хост: google.com Начинаем трассировку...
При запуске без аргументов:
$ go run main.go Использование: geotracer <hostname> Пример: geotracer google.com
go.mod существует с объявлением модуля geotracermain.go содержит package main и использует os.Args для получения хостаfmt.Fprintf в os.Stderr