为了账号安全,请及时绑定邮箱和手机立即绑定

组织Go界面的最佳方法

组织Go界面的最佳方法

Go
幕布斯6054654 2021-04-05 13:15:08
自从我用C ++编程以来已经有很长时间了,但是我知道在C ++中,这些类被组织为.h文件和.cpp文件。许多其他语言也受益于将代码分成目录结构内的逻辑分组以改善组织。好吧,我现在尝试学习Go,当我接触到接口时,我正在阅读Go for C ++ Programmers文章。这篇文章解释了Go中的接口本质上可以代替类,并展示了如何很好地设置它们。我试图找出的是如何将接口组织到文件中?例如,接口应该在一个文件中,而实现在另一个文件中吗?myInterface.gotype myInterface interface {    get() int    set(i int)}myImplementation.gotype myType struct { i int }func (p *myType) set(i int) { p.i = i }func (p *myType) get() int { return p.i }我的代码在这里可能是错误的,因为我还不完全知道自己在做什么(如果我错了,请纠正我),但这是设置此代码的最佳方法吗?我很难理解如何在Go中组织代码,因此非常感谢!
查看完整描述

2 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

无需将类型和接口放在单独的文件中。从每个程序包导出的内容都很重要,您可以通过以大写字母开头的名称来表示它们。在C&co。头文件中的内容很重要,因为这就是“导入”(包含)的东西。在Go中,它是导入的包,无论其内容如何组织到不同的源文件中都无所谓(无论如何导入程序都不会看到)。

我个人的建议是避免创建不必要的文件。如果代码相对较短,则将其保存在一个文件中。如果很长,则考虑将感觉很自然的部分分开(例如,如果您使用Java或C ++进行操作,则接口+相关函数可能会形成一个单独的类)。不要仅仅为了将定义从代码中分离而分离任何东西。即使在C语言中,它在Go语言中也没有意义。


查看完整回答
反对 回复 2021-04-26
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

Go编程语言不是C ++,也不是C。像新语言一样使用它。Go没有等效于头文件。它与C ++类的概念仅有松散的联系。由于您不是专业的C ++程序员,因此请忽略Go For C ++ Programmers文章。

首先阅读Go语言编程指南。然后阅读Effective Go。浏览《 Go编程语言规范》,因此您将知道在哪里查找内容。

Go是开源的,因此请查看真实的Go软件包文档源代码

首先,请查看Go的作者编写的time软件包文档源代码。他们没有为接口声明和实现使用单独的文件,所以为什么要这么做?正如您自己说的那样,您尚不知道自己在做什么,那么为什么不从专家的榜样开始呢?

Go编程语言发展的某些动机来自对创建一种比C更好,比C ++简单得多的语言的渴望。考虑到Go的过程特性(通常类似于C),过程设计概念(如耦合和内聚)很有用。这些概念在将Gotime程序包划分为多个源文件中很明显。一些类设计概念也将很有用,但是请记住,Go不支持继承。

正如Nicklaus Wirth在他的经典论文《逐步改进程序开发》中指出的那样,程序的早期草稿很少是理想的,有时甚至是草率的。即使最终版本也很少是完美的。例如,围棋作者仅在几个月后就重写了围棋json包。

Go编程语言的设计和实现使其可以使用许多小功能。它倾向于简洁的解决方案。当然,许多功能并未在包装外部公开。函数大小或数量的任意限制很少能以任何语言显示。

Go程序是通过将程序包链接在一起来构造的。一个包又由一个或多个源文件构造而成,这些源文件一起声明了属于该包的常量,类型,变量和函数,并且可以在同一包的所有文件中进行访问。这些元素可以导出并在另一个包中使用。 软件包,Go编程语言规范。

您想要第一个Go软件包做什么?提出可以回答的特定问题,并提供详细信息。


查看完整回答
反对 回复 2021-04-26
  • 2 回答
  • 0 关注
  • 242 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信