-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

Go語言核心編程

( 簡體 字)
作者:李文塔類別:1. -> 程式設計 -> Go語言
譯者:
出版社:電子工業出版社Go語言核心編程 3dWoo書號: 49952
詢問書籍請說出此書號!

缺書
NT售價: 395

出版日:9/1/2018
頁數:280
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787121349119
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

寫作背景
2007年,Go語言誕生于谷歌公司,2009年開源,2012年推出1.0版本,曾兩次獲得TIOBE年度語言(2009年和2016年)。2012年起,全球大量的開源項目開始使用Go語言進行開發,目前Go語言已經成為云計算領域事實上的標準語言,特別是在容器領域,誕生了一大批優秀的開源軟件,如Docker、Kubernetes 等。2017年區塊鏈技術在國內大熱,區塊鏈兩個大的技術平臺以太坊(Ethereum)和超級賬本(Hyperledger)與項目Fabric都是基于Go語言構建的。Go語言的應用領域逐步擴大,目前在區塊鏈、云計算、中間件和服務器編程領域顯現出明顯的優勢。Go語言最先在云計算公司盛行,隨后大量的互聯網初創企業將Go語言作為后臺主要開發語言。目前,無論互聯網公司里的獨角獸,還是BAT(百度、阿里巴巴、騰訊),都已將Go語言作為其技術棧的重要組成部分。市場對于Go語言編程人才的需求量也在持續上升。
目前,Go語言編程類圖書有如下幾個類別。
? 基礎全面型
七牛團隊寫作和翻譯的幾本書(《Go 語言編程》《Go 程序設計語言》等),系統地介紹了Go 開發的基礎知識,為Go 語言在國內的推廣做出了很大的貢獻。
? 源碼深入型
雨痕的《Go 語言學習筆記》,上半部分是對 Go 語言基礎知識的總結,下半部分對源碼進行了分析,是學習Go語言內部原理非常好的參考書。
? 專業領域型
專注于介紹某個應用領域,比如謝孟軍的《Go Web編程》,這類圖書主要是介紹使用Go語言在某個領域進行開發的相關知識。
市面上Go語言的圖書這么多了,為什么又要寫一本,本書和市面上的圖書有什么區別呢?這也是我寫這本書之前就認真思考過的問題。我發現市面上缺少介紹Go語言核心特性和使用陷阱的書。Go 語言核心特性包括類型系統、接口、并發,這三部分是Go語言最精華、最優美、最重要的語言特性。于是我就圍繞這三個主題寫了本書,書名就叫《Go語言核心編程》。以類型系統為例,Go 語言中的類型涉及簡單類型、復合類型、命名類型、未命名類型、靜態類型、動態類型、底層類型、接口類型、具體類型及類型字面量等諸多概念,這些在先前的書籍里沒有系統地介紹過,本書試圖幫助讀者梳理清楚這些類型的含義,建立概念,認清類型本質并學會使用;在并發編程中給出了5個并發編程范式并系統地介紹了context標準庫,這也是本書特有的。
內容簡介
本書共9章,圍繞如下主題展開:基礎知識(第1章)、語言核心(第2章∼第7章)、工程管理(第8章)和編程哲學(第9章)。
基礎知識
第1章介紹Go語言編程的基礎知識。基礎知識部分力求從系統性的角度講述Go語言簡潔的語法知識,試圖幫助讀者了解Go語言源程序基本結構,這是本書不同于其他書籍的地方。本章先對Go的源程序進行整體介紹,然后從詞法分析的角度介紹Go語言的各個token,接著介紹Go語言的基礎語法:變量和常量、數據類型及控制結構,讓讀者學習Go語言的語法知識時可以“既見樹木,又見森林”。
語言核心
本書的第2∼7章講解Go語言核心知識,這部分是本書最核心、最重要的部分,主要圍繞如下4個主題展開。
? 類型系統
本書用3章的篇幅來講解Go語言的類型系統,分別是第2章函數、第3章類型系統和第4章接口。類型系統是Go語言的靈魂,Go語言小而美的類型系統是其區別于其他語言的顯著特征。函數在Go語言中是“一等公民”,非侵入式的接口設計也很有特點。類型系統是本書的一條主要線索,幾乎貫穿本書的所有章節,在反射章節里會對Go的類型系統做一個總結。掌握類型系統是寫好Go程序的關鍵。
? 并發編程
第5章介紹Go并發編程,并發編程的原生支持是Go語言顯著的語言特征。“不要通過共享內存來通信,而是通過通信來共享內存”,本章首先講解語言層面對并發的支持,接著講解context標準庫的知識,最后講解常用的并發范式和Go并發模型。
? 反射
第6章介紹Go語言反射的相關知識。反射是Go語言的高級特性,反射是把“雙刃劍”,用好了會有強大的威力,但由于其復雜性且易產生運行時panic,因此反射又表現出脆弱性。Go語言沒有提供泛型支持,所以在開發框架和大型系統中反射是必須面對的一個技術點,市面上的圖書對這部分的介紹不多,本書分類總結了Go的反射API,盡可能梳理出條理清晰的API結構;同時以類型系統和接口底層實現為基礎來介紹反射;最后介紹著名的Web框架martini中使用的依賴注入庫inject。
? 陷阱和習慣用法
第7章介紹Go語言陷阱和一些習慣用法,包括Go語言使用過程中容易出錯和初學者容易困惑的知識點。Go語言雖然設計簡潔,但在某些方面還是有瑕疵的,比如 defer陷阱、短變量的聲明、range臨時變量共享等。同時Go又有其鮮明的書寫格式和習慣用法,本章的最后會介紹這些內容。
工程管理
Go語言是一門面向工程的語言,而不是學術界的產物,第8章介紹Go語言工程管理方面的知識,主要介紹Go的編程環境、命名空間和包管理的相關內容。
編程哲學
第9章討論編程哲學,這部分內容不是介紹編程細節知識,讀者可以把它當作散文來讀。先對Go語言編程哲學做一個總結:少即是多,世界是并行的,組合優于繼承,面向接口編程,等等,試圖從哲學的角度來闡述這些設計思想的先進性。最后介紹Go語言的里程碑事件及未來的發展方向。
相關約定
本書使用Go代表Go語言的簡寫,使用go表示Go語言的并發關鍵字,使用goroutine代表Go語言中的并發執行體。通道和chan都代表Go語言的通信管道。切片和slice都表示Go語言內置的可變數組。本書使用實例或者類型實例表示具體類型的變量,而沒有使用傳統語言對象的概念。標準庫和標準包會混用,都是指Go語言自帶的標準庫。復制和拷貝具有相同的語義,都表示將數據復制一份并拷貝到另一處內存空間。本書是基于Go 1.10.2寫作的,新版本的變動請讀者以官方文檔為準。截至本書出版時,Go 1.11發布,官方推出了新的包管理工具go mod,go mode兼容dep,dep仍可放心使用,go mod是新增的功能,可能需要一段時間才能成熟。
總結
本書絕大部分內容是我六年來在學習和實踐Go語言過程中的總結和感悟,成書過程中也參閱了部分網上和官方資料,由于能力有限,疏忽和不足之處難免發生,歡迎讀者指正,以便及時修訂,我的郵箱是email.tata@qq.com。
感謝
本書原稿基于GitBook+Markdown在Linux下使用Vim完成寫作,原始稿件版式簡單,非常感謝電子工業出版社博文視點編輯部的幫助,使其變成一本優美的紙質書。非常感謝曾劉剛通讀全書,幫助審稿;同時感謝宮振飛、胡宸源、宋磊在成書過程中給予的寶貴意見。在時間碎片化的今天,一字一句地寫完一本書是對自己毅力和耐心的極大考驗,感謝在成書過程中妻子黃靜給予的鼓勵和支持。封面上可愛的地鼠來自上田拓也的作品,非常感謝上田先生欣然授權本書使用。
李文塔
內容簡介:

本書主要分三個方面介紹Go語言:Go語言精華——并發和小而美的類型系統;Go語言缺陷;Go語言的哲學。本書重點介紹Go語言的實踐和并發編程范式,力求讓讀者不但清楚并發的基本語法和原理,還學會怎么去使用。本書對Go語言規范中的命名類型、非命名類型,底層類型,動態類型等概念進行闡述,讓開發者對Go的類型系統有全面的了解;同時,接口是Go類型系統最核心的一個元素,本書中也會花大量的筆墨進行介紹。Go雖然設計得小而美,但語言并不是完美的,有些陷阱和坑需要開發者特別小心,本書會專門介紹Go使用過程中的陷阱,包括: defer陷阱,接口nil,變量短聲明引發的困惑,range的臨時變量復用,slice底層數組重分配等。Go天然的并發支持能夠更好地建模實際問題,本書在最后的部分會介紹Go語言的設計哲學,包括采用組合這種更通用的模式以使得表現力更強;增加一個間接的中間層來解決實際問題,Go的分侵入式接口設計,基于接口的編程實現分層解耦。

目錄:

第1章 基礎知識
1.1 語言簡介
1.1.1 Go語言的誕生背景
1.1.2 語言特性
1.1.3 Go語言的特性
1.1.4 總結
1.2 初識Go程序
1.3 Go詞法單元
1.3.1 token
1.3.2 標識符
1.3.3 操作符(operators)和分隔符(delimiters)
1.3.4 字面常量
1.3.5 總結
1.4 變量和常量
1.4.1 變量
1.4.2 常量
1.5 基本數據類型
1.5.1 布爾類型
1.5.2 整型
1.5.3 浮點型
1.5.4 復數類型
1.5.5 字符串
1.5.6 rune類型
1.6 復合數據類型
1.6.1 指針
1.6.2 數組
1.6.3 切片
1.6.4 map
1.6.5 struct
1.7 控制結構
1.7.1 if語句
1.7.2 switch語句
1.7.3 for語句
1.7.4 標簽和跳轉
第2章 函數
2.1 基本概念
2.1.1 函數定義
2.1.2 多值返回
2.1.3 實參到形參的傳遞
2.1.4 不定參數
2.2 函數簽名和匿名函數
2.2.1 函數簽名
2.2.2 匿名函數
2.3 defer
2.4 閉包
2.4.1 概念
2.4.2 閉包的價值
2.5 panic和recover
2.5.1 基本概念
2.5.2 使用場景
2.6 錯誤處理
2.6.1 error
2.6.2 錯誤和異常
2.7 底層實現
2.7.1 函數調用規約
2.7.2 匯編基礎
2.7.3 多值返回分析
2.7.4 閉包底層實現
第3章 類型系統
3.1 類型簡介
3.1.1 命名類型和未命名類型
3.1.2 底層類型
3.1.3 類型相同和類型賦值
3.1.4 類型強制轉換
3.2 類型方法
3.2.1 自定義類型
3.2.2 方法
3.3 方法調用
3.3.1 一般調用
3.3.2 方法值(method value)
3.3.3 方法表達式(method expression)
3.3.4 方法集(method set)
3.3.5 值調用和表達式調用的方法集
3.4 組合和方法集
3.4.1 組合
3.4.2 組合的方法集
3.5 函數類型
第4章 接口
4.1 基本概念
4.1.1 接口聲明
4.1.2 接口初始化
4.1.3 接口方法調用
4.1.4 接口的動態類型和靜態類型
4.2 接口運算
4.2.1 類型斷言(Type Assertion)
4.2.2 類型查詢(Type Switches)
4.2.3 接口優點和使用形式
4.3 空接口
4.3.1 基本概念
4.3.2 空接口的用途
4.3.3 空接口和nil
4.4 接口內部實現
4.4.1 數據結構
4.4.2 接口調用過程分析
4.4.3 接口調用代價
4.4.4 空接口數據結構
第5章 并發
5.1 并發基礎
5.1.1 并發和并行
5.1.2 goroutine
5.1.3 chan
5.1.4 WaitGroup
5.1.5 select
5.1.6 扇入(Fan in)和扇出(Fan out)
5.1.7 通知退出機制
5.2 并發范式
5.2.1 生成器
5.2.2 管道
5.2.3 每個請求一個goroutine
5.2.4 固定worker工作池
5.2.5 future模式
5.3 context標準庫
5.3.1 context的設計目的
5.3.2 基本數據結構
5.3.3 API函數
5.3.4 輔助函數
5.3.5 context的用法
5.3.6 使用context傳遞數據的爭議
5.4 并發模型
5.4.1 CSP簡介
5.4.2 調度模型
5.4.3 并發和調度
第6章 反射
6.1 基本概念
6.1.1 基本數據結構和入口函數
6.1.2 基礎類型
6.1.3 類型匯總
6.2 反射規則
6.2.1 反射API
6.2.2 反射三定律
6.3 inject庫
6.3.1 inject是什么
6.3.2 依賴注入和控制反轉
6.3.3 inject實踐
6.3.4 inject原理分析
6.4 反射的優缺點
6.4.1 反射的優點
6.4.2 反射的缺點
6.4.3 反射的最佳實踐
第7章 語言陷阱
7.1 多值賦值和短變量聲明
7.1.1 多值賦值
7.1.2 短變量的聲明和賦值
7.2 range復用臨時變量
7.3 defer陷阱
7.4 切片困惑
7.4.1 數組
7.4.2 切片
7.5 值、指針和引用
7.5.1 傳值還是傳引用
7.5.2 函數名的意義
7.5.3 引用語義
7.6 習慣用法
7.6.1 干凈與強迫癥
7.6.2 comma,ok表達式
7.6.3 簡寫模式
7.6.4 包中的函數或方法設計
7.6.5 多值返回函數
第8章 工程管理
8.1 編程環境
8.1.1 環境搭建
8.1.2 工程結構
8.1.3 交叉編譯
8.2 命名空間和作用域
8.2.1 命名空間
8.2.2 作用域
8.2.3 變量覆蓋
8.3 包的基本概念
8.3.1 基本概念
8.3.2 包引用
8.3.3 包加載
8.4 第三方包管理
8.4.1 vendor
8.4.2 dep
第9章 編程哲學
9.1 Go語言設計哲學
9.1.1 少即是多
9.1.2 世界是并行的
9.1.3 組合優于繼承
9.1.4 非侵入式的接口
9.1.5 總結
9.2 Go語言發展史
9.2.1 站在巨人的肩膀上
9.2.2 里程碑
9.3 未來
9.3.1 爭議
9.3.2 Go 2
序: