Go в примери: Методи

В Go всеки вид структура може да има собствени методи1.


  1. method – способ; начин за извършване на определено действие, принадлежащ само на отделен вид данни; функция, принадлежаща само на отделен вид данни; метод
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("площ: ", r.area())
    fmt.Println("обиколка:", r.perim())

Го управлява автоматично превръщането между стойност и указател при извикване на методи. Може да искате да използвате получател указател, за да избегнете копирането на данни при извикване на методи или, за да позволите на метод да променя получаващата структура.

    rp := &r
    fmt.Println("area: ", rp.area())
    fmt.Println("perim:", rp.perim())
}
$ go run methods.go
площ:  50
обиколка: 30
area:  50
perim: 30

В следващия пример ще разгледаме как в Го се групират набори от методи за да определим взаимодействия1.


  1. interfaces – взаимодействия, интерфейси

Следващ пример: .