Leave a Comment
Особенности структур в go
Методы на структурах в golang определяются на типе.
И если мы объявим типизированную переменную, даже не проинициализировав её, методы будут работать корректно до тех пор, пока мы не попытаемся обратиться к полям ресивера.
Вот пример; первые два вызова работают нормально, третий валится с паникой.
package main
import (
"fmt"
)
type A struct {
inner *int
}
func (a *A) Test1() string {
return "1"
}
func (a *A) Test2() string {
return a.Test1()
}
func (a *A) Test3() string {
if a.inner != nil {
return "3"
}
return ""
}
func main() {
var a *A
fmt.Println("1", a.Test1())
fmt.Println("2", a.Test2())
fmt.Println("3", a.Test3())
}
LEAVE A COMMENT
Для отправки комментария вам необходимо авторизоваться.