分享
  1. 首页
  2. 文章

go语言工程约定,分包和编译

lavafree · · 3181 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

go-lang已经发布了go1,前段时间看了一下go语言的教程,就喜欢上了这门语言,但使用多个文件编译是碰到一些麻烦,引用出错编译通不过,google之找到了这篇教程https://golang.org/doc/code.html,我按自己的理解记录一下,英文好的童鞋还是看原文吧!

go语言可以用makefile,也可以按他的约定来直接编译。约定其实比较简单,go语言是这么来配置他的工程的

prjDir						# 工程根目录
	bin/					
		hello 	# 可执行文件,window下为hello.exe
	pkg/					# 包跟目录
		linux_amd64/ 		# 执行平台
			example/		# 分包目录
				newmath.a 	# 包,类似java中的jar
	src/					# 源代码
		example/			
			hello/			# 类似于java的example.hello,java中是包内部目录,go则在包外部
				hello.go 	# 命令行,这个必须在main包,有main函数,生成名字为hello
			newmath/		# 包名,将位于example,编译生成newmath.a包
				sqrt.go 	# 包内源代码文件,不包含main函数

如上结构是go的目录结构了,其实bin和pkg是不用自己建立的,go编译自动生成。

实战一下:

1.在d:\workspace下新建prjDir目录

2.设置GOPATH环境变量

GOPATH = d:\workspace\prjDir

3.prjDir下新建src

4.src下新建example,旗下新建newmath及sqrt.go文件

5.sqrt.go文件输入代码

// Package newmath is a trivial example package.
package newmath
// Sqrt returns an approximation to the square root of x.
func Sqrt(x float64) float64 {
 // This is a terrible implementation.
 // Real code should import "math" and use math.Sqrt.
 z := 0.0
 for i := 0; i < 1000; i++ {
 z -= (z*z - x) / (2 * x)
 }
 return z
}

6.example下新建hello,旗下新建hello.go

7.hello.go输入

// Hello is a trivial example of a main package.
package main
import (
 "example/newmath"
 "fmt"
)
func main() {
 fmt.Printf("Hello, world. Sqrt(2) = %v\n", newmath.Sqrt(2))
}

8.命令行切换到src下,输入命令

go install example/newmath

这时候根prjDir下生成一个pkg,内容如上图

9.src下输入命令

go install example/hello

编译生成hello(hello.exe)命令行

10.执行./hello(hello.exe)就有输出了

go的这种约定很简洁,其实GOROOT就相当于(JAVA_HOME)

GOPATH 相当于PATH,依赖路径,可以配置多个,linux用冒号(:)隔开,window用分号(;)

GO的引用是 一级包/二级包/包名 比如example/newmath



有疑问加站长微信联系(非本文作者)

本文来自:开源中国博客

感谢作者:lavafree

查看原文:go语言工程约定,分包和编译

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
3181 次点击
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏