Если я запускаю следующий код все компилируется и работает нормально:Импортные метод структура не работает
package main
import "fmt"
type Point struct {
x, y int
}
func (p *Point) init() bool {
p.x = 5
p.y = 10
return true
}
func main() {
point := Point{}
point.init()
fmt.Println(point)
}
Но когда я двигаю Point struct
к пакету в каталоге $GOPATH
тогда я получаю следующее сообщение об ошибке: point.init undefined (cannot refer to unexported field or method class.(*Point)."".init)
Может ли кто-нибудь объяснить мне, почему это происходит?
После того, как я поставил Point struct
в пакете с именем class
код выглядит следующим образом (ошибка на 8-й линии, где я называю метод init
):
package main
import "fmt"
import "class"
func main() {
point := class.Point{}
point.init()
fmt.Println(point)
}
Это идиоматическое написать функцию 'NewPoint' построить точку из различных параметров вместо вызова' Инициировать "впоследствии. – nemo
Верно, но я использую это с пакетом RPC, и он позволяет регистрировать только один объект, поэтому мне пришлось поставить init как метод. – Tom