Leave a Comment
Особенности структур в go
Методы на структурах в golang определяются на типе.
И если мы объявим типизированную переменную, даже не проинициализировав её, методы будут работать корректно до тех пор, пока мы не попытаемся обратиться к полям ресивера.
Вот пример; первые два вызова работают нормально, третий валится с паникой.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
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()) } |
https://play.golang.org/p/nSbCWkoHD9
Similar Posts
- None Found
LEAVE A COMMENT
Для отправки комментария вам необходимо авторизоваться.