在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

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

9.1 標(biāo)準(zhǔn)庫概述

fmt、os 等這樣具有常用功能的內(nèi)置包在 Go 語言中有 150 個以上,它們被稱為標(biāo)準(zhǔn)庫,大部分(一些底層的除外)內(nèi)置于 Go 本身。完整列表可以在 Go Walker 查看。

在貫穿本書的例子和練習(xí)中,我們都是用標(biāo)準(zhǔn)庫的包??梢酝ㄟ^查閱第 350 頁包中的內(nèi)容快速找到相關(guān)的包的實(shí)例。這里我們只是按功能進(jìn)行分組來介紹這些包的簡單用途,我們不會深入討論他們的內(nèi)部結(jié)構(gòu)。

  • unsafe: 包含了一些打破 Go 語言“類型安全”的命令,一般的程序中不會被使用,可用在 C/C++ 程序的調(diào)用中。
  • syscall-os-os/exec:
    • os: 提供給我們一個平臺無關(guān)性的操作系統(tǒng)功能接口,采用類Unix設(shè)計(jì),隱藏了不同操作系統(tǒng)間差異,讓不同的文件系統(tǒng)和操作系統(tǒng)對象表現(xiàn)一致。
    • os/exec: 提供我們運(yùn)行外部操作系統(tǒng)命令和程序的方式。
    • syscall: 底層的外部包,提供了操作系統(tǒng)底層調(diào)用的基本接口。

通過一個 Go 程序讓Linux重啟來體現(xiàn)它的能力。

示例 9.1 reboot.go

package main
import (
    "syscall"
)

const LINUX_REBOOT_MAGIC1 uintptr = 0xfee1dead
const LINUX_REBOOT_MAGIC2 uintptr = 672274793
const LINUX_REBOOT_CMD_RESTART uintptr = 0x1234567

func main() {
    syscall.Syscall(syscall.SYS_REBOOT,
        LINUX_REBOOT_MAGIC1,
        LINUX_REBOOT_MAGIC2,
        LINUX_REBOOT_CMD_RESTART)
}
  • archive/tar/zip-compress:壓縮(解壓縮)文件功能。
  • fmt-io-bufio-path/filepath-flag:
    • fmt: 提供了格式化輸入輸出功能。
    • io: 提供了基本輸入輸出功能,大多數(shù)是圍繞系統(tǒng)功能的封裝。
    • bufio: 緩沖輸入輸出功能的封裝。
    • path/filepath: 用來操作在當(dāng)前系統(tǒng)中的目標(biāo)文件名路徑。
    • flag: 對命令行參數(shù)的操作?! ?/li>
  • strings-strconv-unicode-regexp-bytes:
    • strings: 提供對字符串的操作。
    • strconv: 提供將字符串轉(zhuǎn)換為基礎(chǔ)類型的功能。
    • unicode: 為 unicode 型的字符串提供特殊的功能。
    • regexp: 正則表達(dá)式功能。
    • bytes: 提供對字符型分片的操作。
    • index/suffixarray: 子字符串快速查詢。
  • math-math/cmath-math/big-math/rand-sort:
    • math: 基本的數(shù)學(xué)函數(shù)。
    • math/cmath: 對復(fù)數(shù)的操作。
    • math/rand: 偽隨機(jī)數(shù)生成。
    • sort: 為數(shù)組排序和自定義集合。
    • math/big: 大數(shù)的實(shí)現(xiàn)和計(jì)算。   
  • container-/list-ring-heap: 實(shí)現(xiàn)對集合的操作。
    • list: 雙鏈表。
    • ring: 環(huán)形鏈表。

下面代碼演示了如何遍歷一個鏈表(當(dāng) l 是 *List):

for e := l.Front(); e != nil; e = e.Next() {
    //do something with e.Value
}
  • time-log:
    • time: 日期和時間的基本操作。
    • log: 記錄程序運(yùn)行時產(chǎn)生的日志,我們將在后面的章節(jié)使用它。
  • encoding/json-encoding/xml-text/template:
    • encoding/json: 讀取并解碼和寫入并編碼 JSON 數(shù)據(jù)。
    • encoding/xml:簡單的 XML1.0 解析器,有關(guān) JSON 和 XML 的實(shí)例請查閱第 12.9/10 章節(jié)。
    • text/template:生成像 HTML 一樣的數(shù)據(jù)與文本混合的數(shù)據(jù)驅(qū)動模板(參見第 15.7 節(jié))。
  • net-net/http-html:(參見第 15 章)
    • net: 網(wǎng)絡(luò)數(shù)據(jù)的基本操作。
    • http: 提供了一個可擴(kuò)展的 HTTP 服務(wù)器和基礎(chǔ)客戶端,解析 HTTP 請求和回復(fù)。
    • html: HTML5 解析器。
  • runtime: Go 程序運(yùn)行時的交互操作,例如垃圾回收和協(xié)程創(chuàng)建。
  • reflect: 實(shí)現(xiàn)通過程序運(yùn)行時反射,讓程序操作任意類型的變量。

exp 包中有許多將被編譯為新包的實(shí)驗(yàn)性的包。它們將成為獨(dú)立的包在下次穩(wěn)定版本發(fā)布的時候。如果前一個版本已經(jīng)存在了,它們將被作為過時的包被回收。然而 Go1.0 發(fā)布的時候并不包含過時或者實(shí)驗(yàn)性的包。

練習(xí) 9.1

使用 container/list 包實(shí)現(xiàn)一個雙向鏈表,將 101、102 和 103 放入其中并打印出來。

練習(xí) 9.2

通過使用 unsafe 包中的方法來測試你電腦上一個整型變量占用多少個字節(jié)。

鏈接