Введение
Этот лабораторный практикум направлен на проверку знаний о методах в языке программирования Go.
Методы
В предоставленном коде определен тип структуры под названием rect с двумя полями: width и height. Для этого типа структуры определены два метода: area и perim. Метод area вычисляет площадь прямоугольника, а метод perim вычисляет периметр прямоугольника. В главной функции вызываются эти два метода и выводятся их результаты.
- Метод
areaдолжен иметь тип приемника*rect. - Метод
perimдолжен иметь тип приемникаrect. - Метод
areaдолжен возвращать площадь прямоугольника. - Метод
perimдолжен возвращать периметр прямоугольника. - В функции
mainдолжны быть вызваны оба метода и выведены их результаты.
$ go run methods.go
area: 50
perim: 30
area: 50
perim: 30
## Далее мы рассмотрим механизм Go для группировки и
## именования связанных наборов методов: интерфейсы.
Ниже представлен полный код:
// Go поддерживает _методы_, определяемые для типов структуры.
package main
import "fmt"
type rect struct {
width, height int
}
// Этот метод `area` имеет _тип приемника_ `*rect`.
func (r *rect) area() int {
return r.width * r.height
}
// Методы могут быть определены для как типов приемников указателей, так и значений.
// Вот пример метода с приемником значения.
func (r rect) perim() int {
return 2*r.width + 2*r.height
}
func main() {
r := rect{width: 10, height: 5}
// Здесь мы вызываем два метода, определенных для нашей структуры.
fmt.Println("area: ", r.area())
fmt.Println("perim:", r.perim())
// Go автоматически обрабатывает преобразование между значениями
// и указателями при вызове методов. Возможно, вы захотите использовать
// тип приемника указателя, чтобы избежать копирования при вызове метода
// или чтобы метод мог изменять структуру, для которой он вызывается.
rp := &r
fmt.Println("area: ", rp.area())
fmt.Println("perim:", rp.perim())
}
Резюме
Этот лабораторный практикум проверяет способность определять методы в Go и использовать их для выполнения вычислений с типами структуры. Методы area и perim определены для типа структуры rect, а в функции main вызываются эти методы и выводятся их результаты.