zoukankan      html  css  js  c++  java
  • Go笔记之一:工程项目结构的注意事项

    Go笔记之一:工程项目结构的注意事项


    对 Go 项目目录的理解 (Windows平台为例)

    刚安装完的 Go 需要设定环境变量,最关键的环境变量有三个,GOROOT、GOPATH和GOBIN。GOROOT应该设定为 GO 在当前环境下的安装根目录,通常因为 windows 平台都是由安装工具安装完成,因此 windows 平台一般不需要设置。GOPATH 理解为是开发者的“工作区”,即表示进行开发编译 Go 程序的工作区,因此 GOPATH 允许设定多值。而 GOBIN 在 GOPATH 被设定为多值时发挥作用,即用于存放由 go install 命令产生的可执行文件。

    用一个项目具体举例

    项目取名 calcproj,包含一个可执行程序 calc.exe和一个独立库,项目结构如下

    > calcproj
    > |--calc.go
    > |--lib
    > |--less.go
    

    less.go 实现了自定义类型:Integer,并提供了一个方法 Less( b Integer ),该方法实现返回当前值是否小于参数值的结果

    package lib
    
    type Integer int
    
    func (a Integer) Less(b Integer) bool {
    return a < b
    }
    

    calc.go 是入口 main,调用 Less 方法并打印出结果,为了方便,main函数中的赋值被固定

    package main
    
    import(
    "fmt"
    "lib"
    )
    
    func main(){
    
    var a lib.Integer = 3
    fmt.Println(a, a.Less(2));
    }
    

    进入 src 目录运行 go build calc.gogo build,在src目录下获得可执行文件calc.exe,使用命令行工具运行,得到结果

    C:cinlapgocalcprojsrc>calc.exe
    3 false
    

    由书+实践+热心网友得到的经验总结

    • [x] Go的项目可以以自定义名称开头,如myhelloTxtReader等等
    • [x] 在项目目录下,按照 Go 的规则(至少)建立src目录
    • [x] 以src为根目录,main包就放在src下,如果有其它包(如C#中的dll),就建子目录。子目录名字就是包名称,其下的 go 文档开头的也要符合该格式 package 包名称(目录名)
    • [x] 如何正确的对待命令源码文件
    • [x] 当代码包有且仅有一个命令源码文件时,在所在目录中执行go build命令,即可在该目录下生成一个与目录同名的可执行文件;若使用go install命令,则可在当前工作区bin目录下生成相应的可执行文件
    • [x] 命令源码文件不能与库源码文件在同一个代码包,否则无法正确执行go buildgo install命令
    • [x] 同一个代码包中可以有多个命令源码文件,通过go run命令分别运行,但这会使go buildgo install命令无法编译和安装该代码包。

    感谢

    特别感谢Go语言技术交流群的 @【副总】西安-n1ce和@【总裁】重庆-im帥

    参考资料

    • 参考书籍:《Go并发编程实战》
    • 参考书籍:《Go语言编程》
  • 相关阅读:
    Saiku相关异常处理(十五)
    Saiku登录源码追踪.(十三)
    Saiku调用WS接口(十四)
    Saiku本地编译运行后Debug调试(十二)
    Windows查看Java内存使用情况
    Saiku免登录嵌入其他系统使用(十一)
    Saiku更改源代码实现默认查询一天的数据(十)
    Saiku关于MDX过滤的使用-默认显示最近一周的数据(九)
    Saiku部分函数解析(八)
    Saiku缓存处理(七)
  • 原文地址:https://www.cnblogs.com/cinlap/p/8479466.html
Copyright © 2011-2022 走看看