鍍金池/ 教程/ GO/ 2.3 在 Linux 上安裝 Go
4.7 strings 和 strconv 包
13.6 啟動(dòng)外部命令和程序
?# 11.4 類(lèi)型判斷:type-switch
12.1 讀取用戶的輸入
10.6 方法
12.2 文件讀寫(xiě)
13 錯(cuò)誤處理與測(cè)試
9.3 鎖和 sync 包
12.3 文件拷貝
?# 11.7 第一個(gè)例子:使用 Sorter 接口排序
?# 11.5 測(cè)試一個(gè)值是否實(shí)現(xiàn)了某個(gè)接口
6.4 defer 和追蹤
12.10 XML 數(shù)據(jù)格式
13.10 性能調(diào)試:分析并優(yōu)化 Go 程序
?# 11.1 接口是什么
2.2 Go 環(huán)境變量
2.6 安裝目錄清單
2.5 在 Windows 上安裝 Go
11.11 Printf 和反射
1.2 語(yǔ)言的主要特性與發(fā)展的環(huán)境和影響因素
9.0 包(package)
7.4 切片重組(reslice)
13.2 運(yùn)行時(shí)異常和 panic
10.2 使用工廠方法創(chuàng)建結(jié)構(gòu)體實(shí)例
12.8 使用接口的實(shí)際例子:fmt.Fprintf
2.4 在 Mac OS X 上安裝 Go
3.8 Go 性能說(shuō)明
7.2 切片
8.0 Map
3.1 Go 開(kāi)發(fā)環(huán)境的基本要求
5.6 標(biāo)簽與 goto
6.10 使用閉包調(diào)試
9.5 自定義包和可見(jiàn)性
4.3 常量
?# 11.2 接口嵌套接口
6.5 內(nèi)置函數(shù)
前言
10.8 垃圾回收和 SetFinalizer
2.8 Go 解釋器
13.7 Go 中的單元測(cè)試和基準(zhǔn)測(cè)試
6.8 閉包
4.9 指針
13.1 錯(cuò)誤處理
10.1 結(jié)構(gòu)體定義
5.1 if-else 結(jié)構(gòu)
6.6 遞歸函數(shù)
9.9 通過(guò) Git 打包和安裝
2.7 Go 運(yùn)行時(shí)(runtime)
10.7 類(lèi)型的 String() 方法和格式化描述符
3.7 其它工具
9.6 為自定義包使用 godoc
11.12 接口與動(dòng)態(tài)類(lèi)型
13.3 從 panic 中恢復(fù)(Recover)
10.3 使用自定義包中的結(jié)構(gòu)體
11.14 結(jié)構(gòu)體、集合和高階函數(shù)
3.6 生成代碼文檔
9.2 regexp 包
4.1 文件名、關(guān)鍵字與標(biāo)識(shí)符
?# 11.6 使用方法集與接口
7.0 數(shù)組與切片
7.1 聲明和初始化
12.11 用 Gob 傳輸數(shù)據(jù)
5.5 Break 與 continue
1.1 起源與發(fā)展
?# 11 接口(Interfaces)與反射(reflection)
6.9 應(yīng)用閉包:將函數(shù)作為返回值
4.2 Go 程序的基本結(jié)構(gòu)和要素
8.6 將 map 的鍵值對(duì)調(diào)
6.11 計(jì)算函數(shù)執(zhí)行時(shí)間
5.0 控制結(jié)構(gòu)
10.5 匿名字段和內(nèi)嵌結(jié)構(gòu)體
4.6 字符串
3.0 編輯器、集成開(kāi)發(fā)環(huán)境與其它工具
13.8 測(cè)試的具體例子
7.6 字符串、數(shù)組和切片的應(yīng)用
8.4 map 類(lèi)型的切片
3.9 與其它語(yǔ)言進(jìn)行交互
7.3 For-range 結(jié)構(gòu)
9.7 使用 go install 安裝自定義包
6.0 函數(shù)
9.8 自定義包的目錄結(jié)構(gòu)、go install 和 go test
6.3 傳遞變長(zhǎng)參數(shù)
13.9 用(測(cè)試數(shù)據(jù))表驅(qū)動(dòng)測(cè)試
11.9 空接口
8.1 聲明、初始化和 make
6.2 函數(shù)參數(shù)與返回值
9.11 在 Go 程序中使用外部庫(kù)
3.3 調(diào)試器
4.5 基本類(lèi)型和運(yùn)算符
?# 11.8 第二個(gè)例子:讀和寫(xiě)
12.5 用 buffer 讀取文件
總結(jié):Go 中的面向?qū)ο?/span>
11.10 反射包
12.7 用 defer 關(guān)閉文件
9.4 精密計(jì)算和 big 包
4.4 變量
6.1 介紹
13.4 自定義包中的錯(cuò)誤處理和 panicking
12.4 從命令行讀取參數(shù)
9.10 Go 的外部包和項(xiàng)目
8.3 for-range 的配套用法
3.5 格式化代碼
10.4 帶標(biāo)簽的結(jié)構(gòu)體
7.5 切片的復(fù)制與追加
?# 11.3 類(lèi)型斷言:如何檢測(cè)和轉(zhuǎn)換接口變量的類(lèi)型
5.4 for 結(jié)構(gòu)
4.8 時(shí)間和日期
2.3 在 Linux 上安裝 Go
12 讀寫(xiě)數(shù)據(jù)
6.12 通過(guò)內(nèi)存緩存來(lái)提升性能
9.1 標(biāo)準(zhǔn)庫(kù)概述
12.6 用切片讀寫(xiě)文件
10 結(jié)構(gòu)(struct)與方法(method)
8.5 map 的排序
12.9 JSON 數(shù)據(jù)格式
13.5 一種用閉包處理錯(cuò)誤的模式
3.2 編輯器和集成開(kāi)發(fā)環(huán)境
12.12 Go 中的密碼學(xué)
5.2 測(cè)試多返回值函數(shù)的錯(cuò)誤
6.7 將函數(shù)作為參數(shù)
8.2 測(cè)試鍵值對(duì)是否存在及刪除元素
3.4 構(gòu)建并運(yùn)行 Go 程序
2.1 平臺(tái)與架構(gòu)
5.3 switch 結(jié)構(gòu)

2.3 在 Linux 上安裝 Go

如果你能夠自己下載并編譯 Go 的源代碼來(lái)說(shuō)是非常有教育意義的,你可以根據(jù)這個(gè)頁(yè)面找到安裝指南和下載地址:Download the Go distribution

我們接下來(lái)也會(huì)帶你一步步的完成安裝過(guò)程。

  1. 設(shè)置 Go 環(huán)境變量

    我們?cè)?Linux 系統(tǒng)下一般通過(guò)文件 $HOME/.bashrc 配置自定義環(huán)境變量,根據(jù)不同的發(fā)行版也可能是文件 $HOME/.profile,然后使用 gedit 或 vi 來(lái)編輯文件內(nèi)容。

      export GOROOT=$HOME/go

    為了確保相關(guān)文件在文件系統(tǒng)的任何地方都能被調(diào)用,你還需要添加以下內(nèi)容:

      export PATH=$PATH:$GOROOT/bin

    在開(kāi)發(fā) Go 項(xiàng)目時(shí),你還需要一個(gè)環(huán)境變量來(lái)保存你的工作目錄。

      export GOPATH=$HOME/Applications/Go

    $GOPATH 可以包含多個(gè)工作目錄,取決于你的個(gè)人情況。如果你設(shè)置了多個(gè)工作目錄,那么當(dāng)你在之后使用 go get(遠(yuǎn)程包安裝命令)時(shí)遠(yuǎn)程包將會(huì)被安裝在第一個(gè)目錄下。

    在完成這些設(shè)置后,你需要在終端輸入指令 source .bashrc 以使這些環(huán)境變量生效。然后重啟終端,輸入 go envenv 來(lái)檢查環(huán)境變量是否設(shè)置正確。

  2. 安裝 C 工具

    Go 的工具鏈?zhǔn)怯?C 語(yǔ)言編寫(xiě)的,因此在安裝 Go 之前你需要先安裝相關(guān)的 C 工具。如果你使用的是 Ubuntu 的話,你可以在終端輸入以下指令( 譯者注:由于網(wǎng)絡(luò)環(huán)境的特殊性,你可能需要將每個(gè)工具分開(kāi)安裝 )。

      sudo apt-get install bison ed gawk gcc libc6-dev make

    你可以在其它發(fā)行版上使用 RPM 之類(lèi)的工具。

  3. 獲取 Go 源代碼

    官方頁(yè)面國(guó)內(nèi)鏡像 下載 Go 的源碼包到你的計(jì)算機(jī)上,然后將解壓后的目錄 go 通過(guò)命令移動(dòng)到 $GOROOT 所指向的位置。

      wget https://storage.googleapis.com/golang/go<VERSION>.src.tar.gz
      tar -zxvf go<VERSION>.src.tar.gz
      sudo mv go $GOROOT
  4. 構(gòu)建 Go

    在終端使用以下指令來(lái)進(jìn)行編譯工作。

      cd $GOROOT/src
      ./all.bash

    在完成編譯之后(通常在 1 分鐘以?xún)?nèi),如果你在 B 型樹(shù)莓派上編譯,一般需要 1 個(gè)小時(shí)),你會(huì)在終端看到如下信息被打?。?/p>

    http://wiki.jikexueyuan.com/project/the-way-to-go/images/2.3.allbash.png?raw=true" alt="" />

    圖 2.3 完成編譯后在終端打印的信息

    注意事項(xiàng)

    在測(cè)試 net/http 包時(shí)有一個(gè)測(cè)試會(huì)嘗試連接 google.com,你可能會(huì)看到如下所示的一個(gè)無(wú)厘頭的錯(cuò)誤報(bào)告:

      ‘make[2]: Leaving directory `/localusr/go/src/pkg/net’

    如果你正在使用一個(gè)帶有防火墻的機(jī)器,我建議你可以在編譯過(guò)程中暫時(shí)關(guān)閉防火墻,以避免不必要的錯(cuò)誤。

    解決這個(gè)問(wèn)題的另一個(gè)辦法是通過(guò)設(shè)置環(huán)境變量 $DISABLE_NET_TESTS 來(lái)告訴構(gòu)建工具忽略 net/http 包的相關(guān)測(cè)試:

      export DISABLE_NET_TESTS=1

    如果你完全不想運(yùn)行包的測(cè)試,你可以直接運(yùn)行 ./make.bash 來(lái)進(jìn)行單純的構(gòu)建過(guò)程。

  5. 測(cè)試安裝

    使用你最喜愛(ài)的編輯器來(lái)輸入以下內(nèi)容,并保存為文件名 test.go。

    示例 2.1 hello_world1.go

      package main
    
      func main() {
          println("Hello", "world")
      }

    切換相關(guān)目錄到下,然后執(zhí)行指令 go run hello_world1.go,將會(huì)打印信息:Hello, world。

  6. 驗(yàn)證安裝版本

    你可以通過(guò)在終端輸入指令 go version 來(lái)打印 Go 的版本信息。

    如果你想要通過(guò) Go 代碼在運(yùn)行時(shí)檢測(cè)版本,可以通過(guò)以下例子實(shí)現(xiàn)。

    示例 2.2 version.go

      package main
    
      import (
          "fmt"
          "runtime"
      )
    
      func main() {
          fmt.Printf("%s", runtime.Version())
      }

    這段代碼將會(huì)輸出 go1.4.2 或類(lèi)似字符串。

  7. 更新版本

    你可以在 發(fā)布?xì)v史 頁(yè)面查看到最新的穩(wěn)定版。

    當(dāng)前最新的穩(wěn)定版 Go 1 系列于 2012 年 3 月 28 日發(fā)布。

    Go 的源代碼有以下三個(gè)分支:

      - Go release:最新穩(wěn)定版,實(shí)際開(kāi)發(fā)最佳選擇
      - Go weekly:包含最近更新的版本,一般每周更新一次
      - Go tip:永遠(yuǎn)保持最新的版本,相當(dāng)于內(nèi)測(cè)版

    當(dāng)你在使用不同的版本時(shí),注意官方博客發(fā)布的信息,因?yàn)槟闼殚喌奈臋n可能和你正在使用的版本不相符。

鏈接