本書通過大量的代碼示例,對(duì)Go特性進(jìn)行了清晰的描述,并將它們與類似的Java特性進(jìn)行了對(duì)比。本書以Java的視角,全面地介紹了Go的基礎(chǔ)知識(shí)以及優(yōu)秀應(yīng)用程序。讀完這本書,讀者將對(duì)Go及其庫(kù)有足夠的了解,從而開始使用Go語(yǔ)言進(jìn)行編程。本書還介紹了Go的重要軟件包,為計(jì)劃使用Go的開發(fā)人員提供了針對(duì)很多問題的現(xiàn)成工具。
本書清晰地描述了Go功能,并將其與類似的Java功能進(jìn)行對(duì)比,以及通過大量的代碼示例來教授Go。閱讀本書后,你將對(duì)Go及其庫(kù)有足夠的了解,從而開始使用Go語(yǔ)言進(jìn)行有效的編程。本書主要面向?qū)I(yè)Java程序員或?qū)ava有一定了解的讀者,在結(jié)構(gòu)上更像是一個(gè)教程,而不是參考文檔。內(nèi)容涵蓋了Go的關(guān)鍵功能,但并沒有詳細(xì)討論每一個(gè)細(xì)節(jié)。本書的目標(biāo)是讓讀者完全掌握Go及其運(yùn)行時(shí),從而可以有效地編寫Go程序。
自20世紀(jì)90年代中期首次亮相以來,Java獲得了巨大成功。相比于其他語(yǔ)言,Java在Web應(yīng)用程序和關(guān)鍵數(shù)據(jù)處理(例如大數(shù)據(jù)工具)領(lǐng)域扮演了重要角色。除此之外,Java在操作系統(tǒng)和硬件架構(gòu)之間的高度可移植性、豐富且不斷改進(jìn)的語(yǔ)言和函數(shù)庫(kù),與其良好的性能一起促成了它的成功。
但Java也有一些缺點(diǎn)。Java創(chuàng)建于面向?qū)ο缶幊虅倓傄?guī)范化、網(wǎng)絡(luò)傳輸代碼剛剛規(guī);臅r(shí)代。隨之而來的問題是Java運(yùn)行時(shí)(runtime)占用空間大、資源需求大。Java開發(fā)人員試圖通過Java模塊、標(biāo)準(zhǔn)庫(kù)子集和Graal0虛擬機(jī)解決。但實(shí)現(xiàn)同樣的功能,Go語(yǔ)言比Java語(yǔ)言更節(jié)省資源。
隨著時(shí)間的推移,Java語(yǔ)言和運(yùn)行時(shí)不再是眾多現(xiàn)代(尤其是云平臺(tái))程序的最佳選擇。另外,Java的持續(xù)發(fā)展帶來了一個(gè)問題:人們很難全面掌握它。Go卻是一門簡(jiǎn)單易懂的語(yǔ)言。
Go語(yǔ)言及其運(yùn)行時(shí)相對(duì)較新,旨在滿足現(xiàn)代云計(jì)算系統(tǒng)和其他系統(tǒng)編程任務(wù)的需求。很多人認(rèn)為它是“比C更好的C”,可能替代C語(yǔ)言,因?yàn)镚o是與C極為相似的語(yǔ)言。Go語(yǔ)言也可實(shí)現(xiàn)Java在服務(wù)器和應(yīng)用程序方面的大部分功能。這是本書成書的原因。
現(xiàn)在,Go語(yǔ)言正在用于許多新應(yīng)用程序的開發(fā)和已有應(yīng)用程序的重構(gòu)上。以前用Java開發(fā)的程序,可能選擇Kotlin或ScalaJVM(都是基于Java虛擬機(jī)的語(yǔ)言)重構(gòu),但現(xiàn)在Go語(yǔ)言常常超越二者。例如,KhanAcademy使用Go重構(gòu)其Python網(wǎng)站。由于Go具有類似腳本語(yǔ)言的易用性以及編譯語(yǔ)言的高效性,因此常被用于重構(gòu)。
巴里·費(fèi)根鮑姆(Barry Feigenbaum),擁有數(shù)十年的軟件工程相關(guān)經(jīng)驗(yàn),擁有計(jì)算機(jī)工程(專注于面向?qū)ο筌浖O(shè)計(jì))博士學(xué)位和電氣工程學(xué)位。他曾任職于IBM、Amazon等行業(yè)領(lǐng)先公司,目前就職于戴爾,擔(dān)任高級(jí)首席軟件工程師。他在技術(shù)雜志和評(píng)審期刊上發(fā)表了多篇文章,與人合著了幾本關(guān)于IBMPC-DOS的書,并擁有20多項(xiàng)美國(guó)專利。