Параметры функции до её названия golang
Изучаю GO, наткнулся на такую функцию в одном из проектов:
// BeforeCreate ...
func (u *User) BeforeCreate() error {
if len(u.Password) > 0 {
enc, err := encryptedString(u.Password)
if err != nil {
return err
}
u.EncryptedPassword = enc
}
return nil
}
Я не понимаю что за скобки до названия функции и каким образом и какие данные туда передаются. Это не похоже на обычные параметры функции, они передаются в скобках после названия функции. В интернете никто об этом не говорит и я не понимаю как сформулировать свой вопрос для гугла, чтобы он нашёл то, что мне нужно
Ответы (1 шт):
Автор решения: Serenity sun
→ Ссылка
(u *User) означает что метод принимает ссылку структуры и применяет операции только к этой структуре. То есть метод создан для работы со структурой User. Простыми словами мы сказали методу что он будет работать только с структурой User. Пример:
//я структура
type User struct {
Name string
}
//я приму только структуру User
func (u * User) setName() {
u.Name = "Serenity"
}
func main() {
var user = User{"sun"}
//обращаемся методу прямо из структуры
//для этого и используется (u * User)
user.setName()
//вывод: Serenity
}