# 1.6 导入包
go有很多内置的函数,例如`println`,不需要引用即可使用。但是如果不借助go的标准库或者第三方库,我们能做的事情有限。在go中,使用关键字`import`在代码中导入一个包并使用。
修改我们的程序:
```go
package main
import (
"fmt"
"os"
)
func main() {
if len(os.Args) != 2 {
os.Exit(1)
}
fmt.Println("It's over ", os.Args[1])
}
```
使用下面的命令运行:
`go run main.go 9000`
我们现在使用了2个go的标准包:`fmt`和`os`。我们也引入了另外一个内置函数`len`。`len`返回一个字符串大小或者一个字典中值的个数,或者如上代码所示,返回数组元素的个数。如果你想知道为什么这里我们使用2个参数,因为第一个参数即索引为`0`一直表示当前正在运行的可执行文件的路径(你可以自己修改程序并打印观察)。
你可能已经注意到了我们在函数名前加了包名作为前缀,例如,`fmt.Println`。这和其他许多语言不同。我们将会在接下来的章节学习更多关于包的内容。现在,只需知道怎么导入并使用包就是一个很好的开端。
go在导入包的时候是比较严格的,如果导入的包没有被使用,那么程序不能被编译。试着运行一下代码:
```go
package main
import (
"fmt"
"os"
)
func main() {
}
```
你会得到2个错误信息,提示`fmt`和`os`包被导入但是没有被使用。你会觉得很不适应么?但是,过一段时间,你会变得适应(虽然任然很烦人)。go之所以这么严格是因为如果没有使用导入的包会使编译变慢。不可否认,这个问题我们很多人都没有考虑到。
另外,需要值得注意的是go的标准库提供了非常详细的文档。你可以在[http://golang.org/pkg/fmt/#Println](http://golang.org/pkg/fmt/#Println)查询到更多关于`Println`函数的信息。你甚至可以点击章节标题查看源码。你也可以滚动到顶部学习更多关于go格式化输出的功能。
如果你不能上网,你可以在本地运行下面的命令获取这个文档:
`godoc -http=:6060`
并打开浏览器,输入`http://localhost:6060`。
## 链接
- 关于本书
- 引言
- 准备工作
- 安装开发环境
- 开始使用Go
- 创建一个Go模块
- 第1章:基础知识
- 1.1 编译
- 1.2 静态类型
- 1.3 类c语法
- 1.4 垃圾回收
- 1.5 运行go代码
- 1.6 导入包
- 1.7 变量和声明
- 1.8 函数声明
- 1.9 继续之前
- 第2章:语法学习
- 2.1 声明和初始化
- 2.2 结构体上的函数
- 2.3 构造函数
- 2.4 new
- 2.5 结构体字段
- 2.6 组合
- 2.7 指针类型和值类型
- 2.8 继续之前
- 第3章:复杂类型
- 3.1 数组
- 3.2 切片
- 3.3 映射
- 3.4 指针类型和值类型
- 3.5 继续之前
- 第4章:面向对象
- 4.1 包
- 4.2 接口
- 4.3 继续之前
- 第5章:综合知识
- 5.1 错误处理
- 5.2 defer
- 5.3 go语言风格
- 5.4 初始化的if
- 5.5 空接口和转换
- 5.6 字符串和字节数组
- 5.7 函数类型
- 5.8 内存分配
- 第6章:高并发
- 6.1 go协程
- 6.2 同步
- 6.3 通道
- 6.4 继续之前
- 第7章:工具库
- 7.1 类型转换
- 7.2 时间操作
- 第8章:程序测试
- 单元测试
- 性能测试
- 第9章:简单实例
- 内存分配
- 第10章:项目实战
- 结论
- 附录