Структуры и методы
Использование структур
Создадим структуру для хранения координат точки.
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)
Last updated
Was this helpful?