一尘不染

带导出字段的私有类型

go

在转到教程的第2天中,有以下练习:

为什么使用具有导出字段的私有类型可能会有用吗?

例如:

package geometry

type point struct {
    X, Y int;
    name string;
}

请注意,这point是小写的,因此不会导出,而字段X和Y是大写的,因此是。在我看来,要访问导出的字段之一,您将必须能够编写类似的内容。

p.X

但是为了使之成为可能,p必须具有这样的声明:

var p geomitry.point;

要么

p := new(geomitry.point);

但是,这是不可能的(afaik),因为不会导出point的类型声明。


阅读 204

收藏
2020-07-02

共1个答案

一尘不染

但是您可以有一个公共构造函数,对吗?

因此,如果您NewGeometryPoint定义了func,那么您可能可以做到(未针对编译器进行测试)

p := NewGeometryPoint(640,480);
fmt.Println("X:",p.X, "Y:",p.Y);
2020-07-02