Справочник по языку go. С расширением на другие технологии в будущем.
Find a file
2026-04-07 15:56:42 +03:00
catalog Added new modules and search 2026-04-07 15:56:42 +03:00
modules Added new modules and search 2026-04-07 15:56:42 +03:00
utils Started 2026-03-24 16:57:17 +03:00
go.mod Started 2026-03-24 16:57:17 +03:00
LICENSE Added license 2026-03-24 18:01:26 +03:00
main.go Added new modules and search 2026-04-07 15:56:42 +03:00
README.md Added about Linux 2026-04-06 11:02:36 +03:00
rubric Added new modules and search 2026-04-07 15:56:42 +03:00

rubric

Интерактивный терминальный справочник для разработчика. Цветной вывод, структурированные разделы с примерами кода, быстрый доступ по ключам.

./rubric
╔════════════════════════════════════════════════════════════╗
║             rubric — интерактивный справочник              ║
╚════════════════════════════════════════════════════════════╝

  Доступные справочники:

   1.  go        Справочник по языку Go
                 Установка, синтаксис, типы, функции, горутины...

Установка

Требования: Go 1.21+

git clone https://github.com/user/rubric
cd rubric
go build -o rubric .

Или сразу установить глобально:

go install github.com/user/rubric@latest

Использование

Интерактивный режим

./rubric

Открывается главное меню со списком справочников. Навигация двухуровневая:

rubric → выбор справочника → выбор раздела

Вводить можно номер или ключ:

Выберите справочник: 1
Выберите справочник: go

Внутри справочника:

Раздел: 2
Раздел: structs
Раздел: s          ← сокращённый алиас

Для возврата на уровень выше — b. Для выхода — q.

Быстрый доступ (без меню)

# Открыть справочник Go
./rubric -book go

# Открыть конкретный раздел сразу
./rubric -book go -topic basics
./rubric -book go -topic structs

# По алиасу
./rubric -book g -topic s

Вспомогательные флаги

./rubric -list      # список всех справочников
./rubric -help      # справка по флагам и ключам

Структура проекта

rubric/
├── go.mod
├── main.go                      # точка входа, разбор флагов
├── utils/
│   └── display.go               # цвета, форматирование вывода
├── catalog/
│   ├── catalog.go               # главное меню, реестр справочников
│   └── gobook.go                # справочник Go: меню и навигация
└── modules/
    └── gomodules/
        ├── registry.go          # реестр разделов Go
        ├── basics.go            # раздел: установка и команды
        └── structures.go        # раздел: структура программы

Каждый справочник — отдельный файл в catalog/. Каждый раздел внутри справочника — отдельный файл в соответствующем подпакете modules/.


Справочники и разделы

go — Язык Go

Ключ Алиасы Раздел
basics b, base, install Установка и основные команды
structs s, struct, vars, types Структура программы

basics — Установка и основные команды

  • Установка Go на Linux / macOS / Windows
  • Структура проекта, go mod init
  • go build — сборка и кросс-компиляция
  • go run — запуск без сборки
  • go test — тесты, покрытие, бенчмарки, race-детектор
  • go fmt, go vet, golangci-lint — форматирование и анализ
  • go doc — документация
  • go get, go mod tidy — управление зависимостями
  • go env, go clean, go install — окружение и утилиты

structs — Структура программы

  • Имена, ключевые слова, предопределённые идентификаторы
  • Четыре вида объявлений: const, type, var, func
  • Переменные: var, :=, нулевые значения, var-блоки
  • Указатели: &, *, nil, сравнение адресов
  • Функция new и когда её использовать
  • Время жизни переменных, escape analysis
  • Присваивания: простые, составные, tuple assignment, _
  • Объявления типов, алиасы, конверсии
  • Пакеты, файлы, все формы импорта
  • Инициализация пакетов, функция init()
  • Область видимости, затенение (shadowing)

Как добавить новый раздел в справочник Go

  1. Создать файл modules/gomodules/mymodule.go:
package gomodules

import "rubric/utils"

var MyModule = Module{
    Key:         "mykey",
    Aliases:     []string{"mk"},
    Title:       "Название раздела",
    Description: "Краткое описание",
    Run:         showMyModule,
}

func showMyModule() {
    utils.Header("Заголовок")
    utils.Section("Подраздел")
    utils.Code(`// пример кода`)
    utils.Note("Важное замечание")
    utils.Footer()
}
  1. Добавить в modules/gomodules/registry.go в срез All:
var All = []Module{
    BasicsModule,
    StructuresModule,
    MyModule,  // ← добавить сюда
}

Больше ничего не требуется — модуль автоматически появится в меню, поиске и навигации.

Как добавить новый справочник (например, linux)

  1. Создать catalog/linuxbook.go по образцу catalog/gobook.go
  2. Создать modules/linuxmodules/ с нужными разделами
  3. Добавить LinuxBook в срез catalog.All в catalog/catalog.go
  4. При необходимости расширить switch *book в main.go для флага -book linux -topic ...

Вспомогательные функции форматирования

Все модули используют пакет utils для единообразного вывода:

Функция Описание
utils.Header(title) Заголовок раздела в рамке
utils.Section(title) Подзаголовок с линией
utils.Code(code) Блок кода в рамке
utils.Command(cmd, desc) Команда с описанием
utils.Note(text) Замечание с иконкой 💡
utils.Info(label, value) Пара ключ — значение
utils.Println(text) Обычная строка с отступом
utils.Footer() Нижняя линия раздела

Цветовой вывод

Использует ANSI escape-коды. Работает в большинстве современных терминалов: iTerm2, Terminal.app, GNOME Terminal, Windows Terminal, tmux и других.

В средах без поддержки цвета (например, при перенаправлении вывода в файл) escape-коды будут видны как есть. При необходимости отключения цвета — установите переменную NO_COLOR=1 перед запуском или реализуйте проверку os.Getenv("NO_COLOR") в utils/display.go.