{
open() (state bool)
}
Так же есть функция которая принимает интрейфейс в качестве аргумента
func openStuf(o openner) {
o.open()
}
Есть например структура
type hud struct {
hoodState bool
hodName string
}
И реализация интерйфейса
func (h hud) open() (state bool) {
fmt.Println("hud is open")
h.hodName = "Hood is good"
return true
}
Само собой если я создам объект (простите если не так выразился) структуры hud, то поле объекта само собой не изменится, но если я изменю сигнатуру на
func (h *hud) open() (state bool) {...}
То в таком случаее реализация перестает соотвествовать интерфейсу. Объясните пожалуйста почему, для чего так сделано (наврное что бы избежать каких то проблем с тем что может отсуствовать поле?), и есть ли какой то обход этого (Архитектурой ?)
У вас сигнатура метода не меняется и она будет соотвествовать интерфейсу
Ты не можешь сделать указатель интерфейсом и использовать не указатель, то есть когда ты пытаешься создать (h *hud) open(), то ты пытаешься сделать так, чтобы *hud соответствовал openner, и при этом использовать hud как openner, что ошибка
Обсуждают сегодня