Go
  • Введение
  • Основы
  • Массивы
  • Считывание данных
  • Словари
  • Функции
  • Структуры и методы
  • Ошибки
  • JSON
  • Динамические массивы
  • Сортировка записей
Powered by GitBook
On this page
  • Использование структур
  • Использование методов у структур
  • Интерфейсы

Was this helpful?

Структуры и методы

Использование структур

Создадим структуру для хранения координат точки.

type pointXY struct {
    x float64
    y float64
}

Напишем функцию для расчёта расстояния между двумя точками.

func getDistance(a pointXY, b pointXY) float64 {
    var dx float64
    var dy float64
    var result float64
    dx = a.x - b.x
    dy = a.y - b.y
    result = math.Sqrt(dx * dx + dy * dy)
    return result
}

Вызываем созданную функцию.

var aa pointXY
var bb pointXY

aa.x = 2
aa.y = 4

bb.x = 15
bb.y = 7

d := getDistance(aa, bb)
fmt.Println("Distance:", d)

Использование методов у структур

Опишем структуру с двумя полями.

type NodeStructure struct {
    a int
    b int
}

Создадим метод инициализации полей структуры.

func (t * NodeStructure) initFields(aa int, bb int) {
    t.a = aa
    t.b = bb
}

Создадим метод вывода полей структуры на экран.

func (t * NodeStructure) printFields() {
    fmt.Println("A:" , t.a)
    fmt.Println("B:" , t.b)
}

Создадим метод для вычисления суммы полей структуры.

func (t * NodeStructure) getSum() int {
    var s int
    s = t.a + t.b
    return s
}

Создаём две структуры и вызываем их методы.

var x NodeStructure
var y NodeStructure

x.initFields(2, 3)
y.initFields(4, 5)

x.printFields()
y.printFields()

s1 := x.getSum()
s2 := y.getSum()

fmt.Println(s1, s2)

Интерфейсы

Создадим интерфейс с одним методом.

type MyInter interface {
    getAnswer() int
}

Создадим структуру и метод для сложения чисел.

type PlusStructure struct {
    x int
    y int
}

func (t * PlusStructure) getAnswer() int {
    return t.x + t.y
}

Создадим структуру и метод для вычитания чисел.

type MinusStructure struct {
    a int
    b int
}

func (t * MinusStructure) getAnswer() int {
    return t.a - t.b
}

Создадим функцию для вывода результата математической операции на экран.

func writeResult(x MyInter ) {
    ans := x.getAnswer()
    fmt.Println("Answer:", ans)
}

Тестируем созданные конструкции.

var p PlusStructure
var m MinusStructure

p.x = 2
p.y = 3

m.a = 19
m.b = 11

writeResult(&p)
writeResult(&m)
PreviousФункцииNextОшибки

Last updated 5 years ago

Was this helpful?