/
Praxis/

Структура проекта и парсинг аргументов

Контекст

Любая утилита командной строки начинается с умения принимать ввод от пользователя. Прежде чем отправлять 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 — точка входа: Логика:

    1. Проверить наличие аргумента (имя хоста или IP-адрес)
    2. При отсутствии аргумента — вывести сообщение об использовании и завершить программу
    3. Вывести полученный хост для проверки корректности парсинга

Пример работы

$ go run main.go google.com Целевой хост: google.com Начинаем трассировку...

При запуске без аргументов:

$ go run main.go Использование: geotracer <hostname> Пример: geotracer google.com

Полезные материалы

  • Command-Line Arguments — Go by Example
  • os.Args — документация
  • Go Modules — система зависимостей
  • Аргументы командной строки в Go — на русском

Критерии

не проверялось
  • Файл go.mod существует с объявлением модуля geotracer
  • Файл main.go содержит package main и использует os.Args для получения хоста
  • При отсутствии аргументов выводится сообщение об использовании через fmt.Fprintf в os.Stderr
Войдите в аккаунт, чтобы начать проект
Запустите первую проверку