我们来谈谈将要创建的内容。 如前所述,我们将创建两个项目:一个用于程序的核心逻辑,另一个用于通过Web API公开逻辑。 假设你现在是一个团队的一员,这个团队正在构建一个网上银行系统。
定义功能和要求
我们将要建立的网上银行是一个概念验证,它将确定构建银行程序是否可行。 在第一次迭代中,与核心程序包的交互将通过一个CLI程序进行。 我们没有用户界面,也不会将数据持久保存到数据库中。 为了查看客户的对账单,我们将公开一个终结点。
网上银行系统将:
允许客户创建帐户。
允许客户取款。
允许客户将资金转到其他帐户。
提供包含客户数据和最终余额的对账单。
通过终结点公开一个Web API,用于输出对账单。
我们将一同构建此程序,所以你现在不需要太担心细节。
创建初始项目文件
接下来,让我们创建程序所需的初始文件集。 我们将为所有银行核心逻辑和main程序创建一个Go程序包,以使用一些客户和操作(例如存款和转账)来初始化系统。 另外,此main程序还会启动一个Web API服务器,以便为对账单公开一个终结点。
让我们在 $GOPATH目录中创建以下文件结构:
$GOPATH/
src/
bankcore/
go.mod
bank.go
bankapi/
go.mod
main.go
然后,为了确保我们只需要集中精力在合适的文件中编写代码,让我们开始编写一个Hello World! 程序,该程序将确认我们可以从bankapi主程序调用bankcore程序包。
将以下代码片段复制并粘贴到src/bankcore/bank.go中:
package bank
func Hello() string {
return "Hey! I'm working!"
}
我们将使用Go模块。 在src/bankcore/go.mod中添加以下内容,为此程序包提供一个正确的名称,以便以后可以引用它:
module github.com/msft/bank
go 1.14
然后,在src/bankapi/main.go中添加以下代码来调用bankcore程序包:
package main
import (
"fmt"
"github.com/msft/bank"
)
func main() {
fmt.Println(bank.Hello())
}
在src/bankapi/go.mod中,我们需要在本地引用bankcore程序包文件,如下所示:
module bankapi
go 1.14
require (
github.com/msft/bank v0.0.1
)
replace github.com/msft/bank => ../bankcore
若要确保一切正常,请在 $GOPATH/src/bankapi/ 目录中打开终端并运行以下命令:
go run main.go
应会看到以下输出:
Hey! I'm working!
此输出确认你的项目文件已完全按预期正确设置。 接下来,我们将开始编写代码,以实现我们的网上银行系统的初始功能集。