我的组织使用Rails开发其应用程序,但是我试图用Golang重新编写我们的后端流程之一,因为它更快。

我已经用公司为我的应用程序构建了一个应用程序的命名空间(example.co),并为应用程序中的每个软件包创建了一个子文件夹。

我包含的每个库(例如sqlx等)也都有自己的文件夹。

src/
  github.com/
    jmoiron/
      (sqlx package files)
  example.co
    my_app/
      (my app package files)
    model/
      (model package files...)

However looking at other packages like sqlx,看来他们完全废弃了此目录结构,并将所有文件放在根目录中

这是因为我正在编写应用程序,而sqlx是要包含在其他应用程序中的软件包吗?还是只是偏好上的差异,因为没有真正接受的“标准”

最佳答案

我在第一个项目中也这样做过。从那以后我学会了:

  • $GOPATH/bin/ pkg/ src/布局由go get和类似的命令
  • 构建
  • ,您可以将.go文件组织为单个平面项目目录或子文件夹(注意:同一文件夹中的所有.go文件必须具有相同的程序包名称)
  • 将其他人的代码放在项目根目录下的/vendor目录中,如果是您的应用需要工作的代码(谷歌代码,这是imo中最糟糕的部分)
  • 将您自己的项目放在gopath下,如果您希望它更易于访问,请符号链接(symbolic link)到它

    因此,我想您的代码可能类似于:
    /Users/user2490003/MyGoPath/
    ▾ src/github.com/user2490003/myproject/
      ▾ model/
          user.go
      ▾ myapp/
          myapp.go
      ▾ vendor/github.com/jmoiron/sqlx/
          sqlx.go
        main.go
    

    导入完整的程序包引用,如下所示:
    // main.go
    package main
    import (
      github.com/jmoiron/sqlx
      github.com/user2490003/myproject/myapp
      github.com/user2490003/myproject/model
    )
    

  • 10-07 19:02
    查看更多