Я думаю что вы действительно спрашиваете здесь: почему документация к пакету изложена так, как она есть? То есть, для этого конкретного c случая, в этой конкретной документации пакета c мы видим:
type Time
func Date(year int, month Month, day, hour, min, sec, nsec int, loc *Location) Time
func Now() Time
, где строка type Time
появляется сама по себе, затем сразу под ним появляются несколько объявлений func
, которые возвращают значение типа Time
.
Причина, по которой эти два символа имеют отступ, состоит в том, чтобы указать, что эти функции возвращают значение типа Time
. Причина, по которой они появляются под строкой type Time
, заключается в том, что эти функции возвращают значение типа Time
.
. В этом случае обе причины сводятся к одному и тому же - они избыточны. Это нормально, хотя! Это просто функция того факта, что генератор документации Go - это программа, которая подчиняется этим правилам сортировки и отступам. Ничто здесь не подразумевает, что эти две функции являются функциями приемника.
Рассмотрим другой пример из той же документации пакета. Несколько раньше мы видим:
type Duration
func ParseDuration(s string) (Duration, error)
func Since(t Time) Duration
func Until(t Time) Duration
Здесь это говорит нам о том, что все три из этих функций возвращают Duration
, хотя первая возвращает оба Duration
и и error
. Функция ParseDuration
- это обычная функция. Именно функции Since
и Until
являются функциями-получателями . 1 Они принимают аргумент получателя типа Time
(и никаких других аргументов) и возвращают значение type Duration
.
В некоторых других конструкциях может иметь смысл отсортировать функции Since
и Until
под именем типа Time
, поскольку это функции-получатели типа Time
. Но документация пакета сортирует (и группы) по типу return , а не по типу получателя или аргумента. Вот и все, что здесь есть на самом деле.
1 Вы можете - и spe c делает - вызывать эти методы если хотите.