методы
This commit is contained in:
parent
063c61fb31
commit
d9f948bcfc
@ -16,7 +16,7 @@ Switch
|
|||||||
Рекурсия (Recursion)
|
Рекурсия (Recursion)
|
||||||
Указатели (Pointers)
|
Указатели (Pointers)
|
||||||
Структуры (Structs)
|
Структуры (Structs)
|
||||||
Methods
|
Методы (Methods)
|
||||||
Interfaces
|
Interfaces
|
||||||
Errors
|
Errors
|
||||||
Goroutines
|
Goroutines
|
||||||
|
@ -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())
|
||||||
|
@ -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.
|
# и именования связанных наборов методов: интерфейсов.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user