chincharovpc
@chincharovpc

Как описать функцию в интерфейсе?

У структуры есть функция, которая принимает значение и возвращает себя
func (r Group) SetNum(num int) Group {
	r.num = num
	return r
}

как мне правильно описать эту функцию в интерфейсе?

Вариант 1 : возвращает структуру
type IGroup interface {
	SetNum(num int) Group
}

Вариант 2 : возвращает интерфейс
type IGroup interface {
	SetNum(num int) IGroup
}


полный код
type Group struct {
	num int
}

func NewGroup(num int) Group {
	return Group{
		num: num
	}
}

func (r Group) SetNum(num int) Group {
	r.num = num
	return r
}
  • Вопрос задан
  • 134 просмотра
Решения вопроса 2
@Blindovich
Если вы делаете интерфейс, значит предполагаете несколько реализаций в у разных структур, значит правильнее будет вернуть интерфейс, иначе ваш код не будет полиморфным
Ответ написан
Комментировать
@calculator212
как мне правильно описать эту функцию в интерфейсе?
Если вы имеете ввиду, как скомпилировать код во втром случае, то вам нужно сделать так, чтобы структура удовлетворяла бы вашему интерефейсу, т.е. нужно возвращаемое значение SetNum поменять на IGroup.
type IGroup interface {
	SetNum(num int) IGroup
}

type Group struct {
	num int
}


func (r Group) SetNum(num int) IGroup {
	r.num = num
	return r
}

func NewGroup(num int) Group {
	return Group{
		num: num,
	}
}
И всё скомпилируется
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы