Методы в языке программирования Go

Beginner

This tutorial is from open-source community. Access the source code

Введение

Этот лабораторный практикум направлен на проверку знаний о методах в языке программирования 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 вызываются эти методы и выводятся их результаты.