# 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章:項目實戰
- 結論
- 附錄