Go語言入門經典( 簡體 字) | |
作者:周家安 | 類別:1. -> 程式設計 -> Go語言 |
出版社:清華大學出版社 | 3dWoo書號: 54214 詢問書籍請說出此書號! 有庫存 NT售價: 495 元 |
出版日:3/1/2021 | |
頁數:402 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787302568490 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
第1章準備工作
1.1安裝Go語言編譯器 1.2配置環境變量 1.3驗證Go語言編譯器的工作狀態 第2章語法基礎 2.1代碼結構 2.2main包與main函數 2.3Go語句 2.4代碼塊 2.5注釋 2.6使用Go語言編譯器 第3章運算符 3.1操作數 3.2算術運算符 3.2.1四則運算符 3.2.2取余運算符 3.2.3如何實現指數運算 3.2.4自增與自減運算符 3.3比較運算符 3.4邏輯運算符 3.5位運算符 3.5.1按位與 3.5.2按位或 3.5.3取反 3.5.4位移 3.5.5按位異或 3.5.6清除標志位 3.6成員運算符 3.7取地址運算符 3.8復合運算符 3.9運算符的優先級 第4章程序包管理 4.1package語句 4.2程序包的目錄結構 4.3導入語句 4.4初始化函數 4.5模塊 4.5.1go.mod文件的基本結構 4.5.2創建go.mod文件 4.5.3編輯go.mod文件 4.5.4使用本地模塊 4.6成員的可訪問性 第5章變量與常量 5.1變量的初始化 5.2組合賦值 5.3匿名變量 5.4常量 5.5批量聲明 5.6變量的作用域 5.7變量的默認值 第6章基礎類型 6.1字符與字符串 6.1.1rune類型 6.1.2string類型 6.2數值類型 6.2.1示例:獲取數值類型占用的內存大小 6.2.2整數常量的表示方式 6.2.3科學記數法 6.2.4復數 6.3日期與時間 6.3.1Month類型 6.3.2Weekday類型 6.3.3Duration類型 6.3.4Time類型 6.3.5Sleep函數 6.3.6Timer類型 6.4指針 6.4.1何時使用指針類型 6.4.2new函數 6.5iota常量 第7章函數 7.1函數的定義 7.2調用函數 7.3return語句 7.4多個返回值 7.5可變個數的參數 7.6匿名函數 7.7將函數作為參數傳遞 第8章流程控制 8.1順序執行 8.2if語句 8.3switch語句 8.3.1基于表達式構建的switch語句 8.3.2基于類型構建的switch語句 8.3.3fallthrough語句 8.4for語句 8.4.1僅帶條件子句的for語句 8.4.2帶三個子句的for語句 8.4.3枚舉集合元素語句 8.4.4continue與break語句 8.5代碼跳轉 8.5.1代碼標簽與goto語句 8.5.2break、continue語句與代碼跳轉 第9章接口與結構體 9.1自定義類型 9.2結構體 9.2.1結構體的定義 9.2.2結構體的實例化 9.2.3方法 9.3接口 9.3.1接口的定義 9.3.2接口的實現 9.3.3空接口——interface{} 9.3.4接口與函數 9.4類型嵌套 9.5類型斷言 第10章數組與切片 10.1數組 10.1.1數組的初始化 10.1.2訪問數組元素 10.1.3*[n]T與[n]*T的區別 10.1.4多維數組 10.2切片 10.2.1創建切片實例 10.2.2添加和刪除元素 第11章映射與鏈表 11.1映射 11.1.1映射對象的初始化 11.1.2訪問映射對象的元素 11.1.3檢查key的存在性 11.2雙向鏈表 11.2.1與雙向鏈表有關的API 11.2.2創建鏈表實例 11.2.3添加和刪除元素 11.2.4移動元素 11.2.5枚舉鏈表元素 11.3環形鏈表 11.3.1與環形鏈表有關的API 11.3.2使用環形鏈表 11.3.3滾動環形鏈表 11.3.4鏈接兩個環形鏈表 第12章反射 12.1關鍵API 12.2獲取類型信息 12.2.1類型分辨 12.2.2枚舉結構體類型的方法列表 12.2.3枚舉結構體類型的字段列表 12.2.4查找嵌套結構體的字段成員 12.2.5獲取函數的參數信息 12.2.6獲取通道類型的信息 12.2.7判斷類型是否實現了某個接口 12.3Value與對象的值 12.3.1修改對象的值 12.3.2讀寫結構體實例的字段 12.3.3更新數組/切片的元素 12.3.4調用函數 12.3.5調用方法 12.3.6讀寫映射類型的元素 12.4動態構建類型 12.4.1New函數 12.4.2創建數組類型 12.4.3創建結構體類型 12.4.4動態創建和調用函數 12.4.5生成通用函數體 12.5結構體的Tag 第13章字符串處理 13.1打印文本 13.2格式化輸出 13.2.1格式化整數值 13.2.2格式化浮點數值 13.2.3格式化字符串 13.2.4格式化布爾類型的值 13.2.5%T與%v格式控制符 13.2.6輸出包含前綴的整數值 13.2.7設置輸出內容的寬度 13.2.8控制浮點數的精度 13.2.9參數索引 13.2.10通過參數來控制文本的寬度和精度 13.3讀取輸入文本 13.3.1讀取鍵盤輸入的內容 13.3.2從文件中讀入文本 13.3.3以特定的格式讀取文本 13.4實現Stringer接口 13.5連接字符串 13.6替換字符串 13.7拆分字符串 13.8查找子字符串 13.8.1查找前綴與后綴 13.8.2查找子字符串的位置 13.9修剪字符串 13.9.1去除前綴和后綴 13.9.2去除字符串首尾的空格 13.9.3修剪指定的字符 13.10重復字符串 13.11字符串與數值之間的轉換 13.12切換大小寫 13.13使用Builder構建字符串 第14章常用數學函數 14.1求絕對值 14.2最大值與最小值 14.3三角函數與反三角函數 14.4冪運算 14.5開平方/立方根 14.6大型數值 14.6.1大型整數值之間的運算 14.6.2階乘運算 14.6.3使用大型浮點數值 14.7隨機數 14.7.1生成隨機浮點數 14.7.2生成隨機整數 14.7.3設置隨機數種子 14.7.4生成隨機全排列 14.7.5“洗牌”程序 14.7.6生成隨機字節序列 第15章排序 15.1基本排序函數 15.2實現遞減排序 15.3按字符串的長度排序 15.4Interface接口 第16章輸入與輸出 16.1簡單的內存緩沖區 16.2與輸入/輸出有關的接口類型 16.2.1實現讀寫功能 16.2.2嵌套封裝 16.3Buffer類型 16.4Copy函數 16.5MultiReader函數和MultiWriter函數 16.6SectionReader 第17章文件與目錄 17.1文件操作 17.1.1Create函數與Open函數 17.1.2重命名文件 17.1.3獲取文件信息 17.1.4OpenFile函數 17.2創建和刪除目錄 17.3硬鏈接與符號鏈接 17.3.1硬鏈接 17.3.2符號鏈接 17.4WriteFile函數與ReadFile函數 17.5臨時文件 17.6更改程序的工作目錄 第18章加密與解密 18.1Base64的編碼與解碼 18.1.1內置Base64編碼方案 18.1.2基于流的編碼與解碼 18.1.3自定義字符映射表 18.2DES與AES算法 18.2.1Block接口 18.2.2BlockMode模式 18.2.3基于流的加密與解密 18.3哈希算法 18.3.1hash.Hash接口 18.3.2使用crypto子包中的哈希API 18.3.3HMAC算法 18.4RSA算法 18.4.1生成密鑰 18.4.2加密和解密 18.4.3存儲密鑰 18.5PEM編碼 18.5.1編碼與解碼 18.5.2解碼后的保留數據 18.5.3消息頭 第19章命令行參數 19.1os.Args變量 19.2命令行參數分析API——flag包 19.2.1命令行參數與變量的綁定 19.2.2Value接口 第20章數據壓縮 20.1標準庫對壓縮算法的支持 20.2Gzip壓縮算法 20.2.1Gzip基本用法 20.2.2壓縮多個文件 20.2.3解壓多個文件 20.3DEFLATE算法 20.4自定義的索引字典 20.5Zip文檔 20.5.1從Zip文檔中讀取文件 20.5.2在內存中讀寫Zip文檔 20.5.3注冊壓縮算法 20.6Tar文檔 第21章協程 21.1啟動Go協程 21.2通道 21.2.1實例化通道 21.2.2數據緩沖 21.2.3單向通道 21.2.4通道與select語句 21.3互斥鎖 21.4WaitGroup類型 第22章網絡編程 22.1枚舉本地計算機上的網絡接口 22.2Socket通信 22.2.1TCP示例:文件傳輸 22.2.2UDP示例:文本傳輸 22.3HTTP客戶端 22.3.1發送GET與POST請求 22.3.2發送自定義HTTP頭 22.4HTTP服務器 22.4.1創建HTTP服務器 22.4.2實現Handler接口 22.4.3ServeMux類型 22.4.4封裝函數 22.4.5讀取URL參數 22.4.6獲取客戶端提交的表單數據 22.4.7讀取客戶端上傳的文件 22.5CGI編程 22.5.1準備工作 22.5.2示例:一個簡單的CGI程序 22.5.3使用cgi包 22.5.4在子進程中獲取Request對象 附錄A常用API與程序包對照表 附錄BGo語言代碼編輯工具使用說明 Go(Golang)語言在語法上與C、C++ 語言相似,是一門開源的編程語言,可用于編寫簡單的、實用的應
用程序。Go語言支持內存管理和垃圾回收(GC)機制,使用Go協程可以輕松實現并發計算。本書通過通 俗易懂的文字,著重講解Go語言編程的基礎知識,同時配有豐富的示例。 本書主要內容包括: 開發環境配置及語法基礎,代碼包(Package),內置運算符與數據類型,代碼流程 控制,函數式、接口與結構體,數組、切片與映射類型,反射技術,管理命令行參數,I/O、數據壓縮及文件操 作,加密與解密,網絡編程,Go協程。 作為入門教程,本書適合對編程感興趣并且希望通過自學來掌握Go語言基礎知識的讀者使用,或者 有其他編程語言基礎的讀者閱讀參考。同時,本書也可作為高等院校計算機及相關專業的教材。 經過十多年的發展,Go語言日漸完善,它是一門開源的且支持跨平臺的編程語言。與C、C++語言類似,Go語言也屬于強類型語言,源代碼需要編譯后才能運行,因此擁有較優的性能。從小工具到Web服務器的開發,Go語言都能勝任。
Go語言有以下特點: (1) 代碼以包(Package)為單元,同一層目錄下只能定義一個包名。 (2) 一個可執行程序有且只能有一個命名為main的包,main包中必須存在main函數。當程序運行時,會查找main函數,并從該函數開始執行; 當main函數執行完畢(或跳出該函數)后,可執行程序退出。 (3) 代碼語句可以以“;”結尾,也可以省略。 (4) 左大括號(“{”)不能另起一行輸入,必須與前面的內容同處一行。例如: func test() { …… } (5) if、for等關鍵字之后不需要小括號(C、C++等語言需要小括號)。 (6) 字符串常量可以使用“`”來避免轉義,例如: `some content` (7) 在函數(或方法)的調用語句中使用go關鍵字可以輕松完成異步編程。例如: go test() 本書內容涵蓋了Go語言的各個知識點。從語法基礎、數據類型到較為復雜的反射技術、網絡編程,均有闡述。每個知識點都配有豐富的代碼示例,方便理解; 每一章的末尾附帶思考題,可幫助讀者回憶所學內容,加深印象。 編者希望通過本書幫助初學者快速了解Go語言,掌握最基本的編程方法和技術要點。閱讀本書后,讀者應該能夠運用Go語言編寫出一些像樣的程序。 由于編者水平有限,書中難免出現不完善的地方,歡迎廣大讀者及同仁不吝賜教,共同進步。 編者 2020年6月 |