https://github.com/astaxie/build-web-application-with-golang/blob/master/01.2.md
说明:A是原文或说明是关于哪一小节。B是修改建议
第一章review完毕。最开始一点,在QQ交流过,没有另外给出。
A.文件夹名称代码包名称,当然也允许多级目录
B.不通顺
A.例如在src下面新建了目录$GOPATH/src/github.com/astaxie/beedb 那么这个包名称就是“github.com/astaxie/beedb”
B.这里并非包名称是这个,只是表明包路径
A.注意:package的名称必须和目录名保持一致
B.这里已经讨论过
A.在任意的目录执行如下代码go install mymath
B.这里应该是在当前GOPATH目录的任意目录,比如不能在你设置的GOPATH路径之外
另外这里有一个前提最好强调一下就是需要设置GOPATH,不设置GOPATH结果是不一样的
A.这个.a文件是应用包,相当于一个函数库一样,那么我们如何进行调用呢?
B.矛盾的话也提一下,相当于xxx一样,一样不要吧
A.如何安装该应用,进入该目录执行go install
B.对于设置了GOPATH,不一定非得进入该目录才能执行go install,对于实际项目,更多的是在GOPATH目录(任何一子目录)执行go install mythapp这种形式
A.获取远程包
B.这里是不是最好说一下加上-u参数表示会更新远程包;同时说一下,go get会自动将远程包的依赖也搞定
A.如果是main包,当你执行go build之后,它就会在当前目录下生成一个可执行文件。如果你需要在$GOPATH/bin下生成相应的文件,同样需要执行go install。
B.实际上,go build 加上-o参数可以指定输出到$GOPATH/bin目录
A.我们可以指定go build -o astaxie.exe,默认情况是你的package名,就是你的文件夹名称。
B.这里go build的文档不是这么说的。
The -o flag specifies the output file name. If not specified, the
name is packagename.a (for a non-main package) or the base
name of the first source file (for a main package).
A.(注:实际上,package名在Go语言规范中指代码中“package”后使用的名称,此名称可以与文件夹名不同。默认生成的可执行文件名是文件夹名。)
B.又是包名,又是可执行文件名,普通包和main包最好分开说
A. go fmt
B. go fmt 的,更多时候是用gofmt,而且,需要参数-w,否则格式化结果不会会写入文件。gofmt -w src,可以格式化整个项目
A. 这个命令在内部实际上分成了两步操作:第一步是go build,第二步会把编译好的东西move到$GOPATH/pkg或者$GOPATH/bin。
B. 不能这么说,go build会将结果丢弃(main包除外)。都丢弃了,怎么move?应该是go build中前一部分功能是生成结果,然后丢弃;而go install是生成结果,move到对应目录
A. 关于go工具
B. 所有的工具,建议让读者go help xxx看一下文档
A. 关于开发工具的
B. 没仔细看。不过是否应该加上IntelliJ IDEA,据说现在对Go支持挺好