методы

This commit is contained in:
badkaktus 2019-10-07 15:57:42 +03:00
parent 063c61fb31
commit d9f948bcfc
3 changed files with 14 additions and 13 deletions

View File

@ -16,7 +16,7 @@ Switch
Рекурсия (Recursion) Рекурсия (Recursion)
Указатели (Pointers) Указатели (Pointers)
Структуры (Structs) Структуры (Structs)
Methods Методы (Methods)
Interfaces Interfaces
Errors Errors
Goroutines Goroutines

View File

@ -1,4 +1,4 @@
// Go supports _methods_ defined on struct types. // Go поддерживает _методы_ для структур
package main package main
@ -8,13 +8,13 @@ type rect struct {
width, height int width, height int
} }
// This `area` method has a _receiver type_ of `*rect`. // Метод `area` принимает _получателя_ `*rect`.
func (r *rect) area() int { func (r *rect) area() int {
return r.width * r.height return r.width * r.height
} }
// Methods can be defined for either pointer or value // Методы могут принимать как указатели, так и значения.
// receiver types. Here's an example of a value receiver. // Вот пример со значением.
func (r rect) perim() int { func (r rect) perim() int {
return 2*r.width + 2*r.height return 2*r.width + 2*r.height
} }
@ -22,15 +22,16 @@ func (r rect) perim() int {
func main() { func main() {
r := rect{width: 10, height: 5} r := rect{width: 10, height: 5}
// Here we call the 2 methods defined for our struct. // Вызываем 2 метода, определенные для нашей структуры.
fmt.Println("area: ", r.area()) fmt.Println("area: ", r.area())
fmt.Println("perim:", r.perim()) fmt.Println("perim:", r.perim())
// Go automatically handles conversion between values // Go автоматически обрабатывает преобразование между
// and pointers for method calls. You may want to use // значениями и указателями при вызове методов.
// a pointer receiver type to avoid copying on method // Возможно, вы захотите использовать указатель в
// calls or to allow the method to mutate the // качестве получателя, чтобы избежать копирования при вызове
// receiving struct. // метода или позволить методу изменять структуру
// получателя.
rp := &r rp := &r
fmt.Println("area: ", rp.area()) fmt.Println("area: ", rp.area())
fmt.Println("perim:", rp.perim()) fmt.Println("perim:", rp.perim())

View File

@ -4,5 +4,5 @@ perim: 30
area: 50 area: 50
perim: 30 perim: 30
# Next we'll look at Go's mechanism for grouping and # Далее мы рассмотрим механизм Go для группировки
# naming related sets of methods: interfaces. # и именования связанных наборов методов: интерфейсов.