Все вопросы

37 Практика

Как разложить код по пакетам?

Один каталог — один пакет. Имя пакета по соглашению совпадает с именем каталога и пишется коротким словом: user, а не userpkg. Каталог internal виден только родительскому дереву модуля, снаружи его импортировать нельзя.

Пакет собирают вокруг задачи, а не вокруг слоя «все модели» или «все утилиты». Маленький internal/web честнее, чем общий utils, в который стекается несвязанный код.

Цикл импорта запрещён. Если два пакета тянут друг друга, общий кусок выносят в третий.

Пример

Go

экспортированная точка входа пакета

package greet

import "fmt"

func Hello(name string) {
    fmt.Println(hello(name))
}

func hello(name string) string {
    return "привет, " + name
}