Можно ли как-нибудь включить формулы в структуру? - PullRequest
0 голосов
/ 27 октября 2019

Я пытаюсь создать структуру, которая использует формулу для автоматического создания данных в одном из полей структуры при вводе двух других значений.

Например, я хочу создать двухмерную прямоугольную комнату сLength и Width, которые являются значениями, которые вводятся. Затем я хотел бы включить формулу Area = Length * Width в структуру.

Попытался и просто получил синтаксическую ошибку:

синтаксическая ошибка: неожиданно =, ожидается точка с запятой или символ новой строки или}

// CURRENT CODE
type room struct {
 L int
 W int
 A int
}
// WOULD LIKE IT TO BE
type room struct {
 L int
 W int
 A int = room.L*room.H
}

Ответы [ 2 ]

3 голосов
/ 27 октября 2019

Поскольку A является инвариантом, это хорошо подходит для функции, а не для поля.

type room struct {
    L int
    W int
}

func (r *room) area() int {
    return r.L * r.W
}
0 голосов
/ 27 октября 2019

Если вы хотите сохранить A в качестве поля, вы можете при желании предварительно вычислить вычисление в конструкторе.

type room struct {
 L int
 W int
 A int
}

func newRoom(length, width, int) room {
  return room{
    L: length,
    W: width,
    A: length * width,
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...