- 前言
- Go 与操作系统
- Go 内部机制
- Go 基本数据类型
- 4 组合类型的使用
- 5 数据结构
- 6 Go package 中不为人知的知识
- 7 反射和接口
- 8 Go UNIX 系统编程
- 08.1 关于 UNIX 进程
- 08.2 flag 包
- 8.2 flag 包
- 08.3 io.Reader 和 io.Writer 接口
- 08.4 bufio 包
- 08.5 读取文本文件
- 08.6 从文件中读取所需的数据量
- 08.7 为什么我们使用二进制格式
- 08.8 读取 CSV 文件
- 08.9 写入文件
- 08.10 从磁盘加载和保存数据
- 08.11 再看strings包
- 08.12 关于bytes包
- 08.13 文件权限
- 08.14 处理 Unix 信号
- 08.15 Unix 管道编程
- 08.16 遍历目录树
- 08.17 使用 ePBF
- 08.18 关于 syscall.PtraceRegs
- 08.19 跟踪系统调用
- 08.20 User ID 和 group ID
- 08.21 其他资源
- 08.22 练习
- 08.23 总结
- 9 并发 Goroutines、Channel 和 Pipeline
- 10 Go 并发-进阶讨论
- 11 代码测试、优化及分析
- 12 Go 网络编程基础
- 13 网络编程 - 构建服务器与客户端
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
06.3 设计你的 Go packages
Go 包的源码可以包括多个文件和多个目录,可以在以包名称命名的单个目录找到,除了 main
包,它可以放在任意位置。
这章的目标是开发一个名为 aPackage
的简单 Go 包。这个包的源文件命名为 aPackage.go
,它的源码分为两部分介绍。
aPackage.go
的第一部分如下:
package aPackage
import (
"fmt"
)
func A() {
fmt.Println("This is function A!")
}
aPackage.go
的第二部分代码如下:
func B() {
fmt.Println("privateConstant:", privateConstant)
}
const MyConstant = 123
const privateConstant = 21
如您所见,开发一个新包是相当简单的!现在您不能单独使用这个包,需要创建一个名为 main
有 main()
函数的包来创建执行文件。这里,使用 aPackage
的程序名是 useAPackage.go
,代码如下:
package main
import (
"aPackage"
"fmt"
)
func main() {
fmt.Println("Using aPackage!")
aPackage.A()
aPackage.B()
fmt.Println(aPackage.MyConstant)
}
如果现在执行 useAPackage.go
,将会得到一个错误信息,告诉您不能执行:
$go run useAPackage.go
useAPackage.go:4:2: cannot find package "aPackage" in any of:
/use/local/Cellar/go/1.9.2/libexec/src/aPackage (from $GOROOT)
/Users/mtsouk/go/src/aPackage (from $GOPATH)
还有一件事需要处理,正如在 第一章——Go与操作系统 了解到的,Go 需要从 Unix shell 执行特定命令来安装所有外部包,也包括您自己开发的。因此,您需要把之前的包放在正确的目录下并对当前 Unix 用户可用。所以安装您自己的包,需要执行如下命令:
$mkdir ~/go/src/aPackage
$cp aPackage.go ~/go/src/aPackage/
$go install aPackage
$cd ~/go/pkg/dawin_amd64/
$ls -l aPackage.a
-rw-r--r-- 1 mtsouk staff 4980 Dec 22 06:12 aPackage.a
如果 ~/go
不存在,您需要使用 mkdir(1)
命令创建它。您也需要有相同的 ~/go/src
目录。
使用 useAPackage.go
将产生如下输出:
$go run useAPackage.go
Using aPackage!
This is function A!
privateConstant: 21
123
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论