在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);

This however is not possible (afaik), since the type declaration f或 point isn't exp或ted.

推荐答案

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

因此,如果您定义了一个NewGeometryPoint函数,那么您可能会这样做(还没有在编译器上进行测试)

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

Go相关问答推荐

按键值排序字符串- Golang

在Golang中Mergesort的递归/并行实现中出现死锁

GORM:一个表的两个外键

如何在出现错误时停止从通道读取?

go aws-lambda 与 terraform 中的 exec 格式错误

Cypher 查找(多个)最低 node

无法在go中为docker容器写入有效的挂载路径

对 CSV 进行单元测试失败

加密/椭圆:try 在无效点上进行操作

如何在切片增长时自动将切片的新元素添加到函数参数

有没有办法将 yaml node 添加到 golang 中现有的 yaml 文档中?

此代码如何生成内存对齐切片?

try 运行 docker-compose up -d 时出现错误

HTTP 重定向不呈现新页面

如何从 docker-compose 命令运行 2 个不同的命令:

如何使用 context.WithCancel 启动和停止每个会话的心跳?

泛型:对具有返回自身的函数的类型的约束

如何使用 httputil.ReverseProxy 设置 X-Forwarded-For

comparable和any有什么区别?

我应该明确地创建一个与Belongs To或Has Many对称的关系吗?