Go项目的结构

时间:2018-04-04 15:00:52

标签: go directory-structure

我的程序使用多个文件,如* .json,*。db

我该如何摆放?第一个变种:

project
    |-> src
        |-> main
            | main.go
            | main_test.go
            |-> data
                | database.db
        |-> config
            | config.go
            |-> data
                | config.json
        ...

或者:

project
    |-> src
        |-> main
            | main.go
            | main_test.go
        |-> config
            | config.go
        ...
    |-> data
        | database.db
        | config.json

我更喜欢第二种变体,但在尝试编写测试时遇到麻烦。我尝试使用" / absolute / path",但它不起作用,因为它指向" ... / src / main /文件夹。

1 个答案:

答案 0 :(得分:3)

go test命令将working directory设置为包含包源文件的目录。例如,配置测试在工作目录设置为project/src/config

的情况下运行

使用测试中相对于该目录的路径:

第一个变体中的测试应该打开这样的文件:

 f, err := os.Open("data/config.json")
 if err != nil {
     // handle error
 }

第二个变种中的测试应该打开这样的文件:

 f, err := os.Open("../../data/config.json")
 if err != nil {
     // handle error
 }

(这里重点是相对路径,而不是使用os.Open)。