Они подробно объяснены здесь - https://anil.cloud/2017/01/26/golang-functions-methods-simplified/
Функция в Go следует синтаксису:
func FunctionName(Parameters...) ReturnTypes...
Пример:
func add(x int, y int) int
Выполнить:
add(2,3)
Метод похож на функцию, но привязан к типу (называемому как получатель). Официальное руководство гласит: «Метод - это функция со специальным аргументом получателя». Получатель появляется между ключевым словом func и именем метода. Синтаксис метода:
func (t ReceiverType) FunctionName(Parameters...) ReturnTypes...
Пример:
func (t MyType) add(int x, int y) int
Выполнить:
type MyType string
t1 := MyType("sample")
t1.add(1,2)
Теперь давайте добавим указатели в таблицу. Go lang - передача по значению, означает, что свежие копии параметров передаются в каждый вызов функции / метода. Чтобы передать их по ссылке, вы можете использовать указатели.
Синтаксис функции с указателем в списке аргументов / параметров.
func FunctionName(*Pointers...,Parameters...) ReturnTypes...
Пример
func add(t *MyType, x int, y int) int
Выполнить:
type MyType string
t1 := MyType("sample")
add(&t1,4,5)
Аналогично для методов тип получателя может быть указателем. Синтаксис метода с указателем (в качестве получателя)
func (*Pointer) FunctionName(Parameters...) ReturnTypes...
Пример * * одна тысяча тридцать шесть
func (t *MyType) add(x int, y int) int
Выполнить:
type MyType string
t1 := MyType("sample")
t1.add(2,3)
Обратите внимание, что мы все еще можем написать t1.add () для выполнения метода с получателем указателя (даже если «t1» не указатель), и Go будет интерпретировать его как (& t1) .add (). Точно так же метод с получателем значения может быть вызван с использованием указателя, Go будет интерпретировать p.add () как (* p) .add () в этом случае (где ‘p’ - указатель). Это применимо только для методов, а не для функций.
Методы с указателем-получателем очень полезны для получения поведения, подобного «Java», когда метод фактически изменяет значение, на которое указывает получатель, а не его копию.