带导出字段的私有类型

在转到教程的第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的类型声明。


眼眸繁星
浏览 227回答 3
3回答

Cats萌萌

但是您可以有一个公共构造函数,对吗?因此,如果您NewGeometryPoint定义了一个func,那么您也许可以做到(未针对编译器进行过测试)p := NewGeometryPoint(640,480);fmt.Println("X:",p.X, "Y:",p.Y);

临摹微笑

抽象的基本类型?package geometrytype point struct {    X, Y int;}type Point struct {    point;    name string;}type Rect struct {    P1, P2 point;    name string;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go