這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
<!-- /* Font Definitions */ @font-face {font-family:Wingdings; panose-1:5 0 0 0 0 0 0 0 0 0; mso-font-charset:2; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:0 268435456 0 0 -2147483648 0;} @font-face {font-family:宋體; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:黑體; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimHei; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:1 135135232 16 0 262144 0;} @font-face {font-family:Tahoma; panose-1:2 11 6 4 3 5 4 4 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:1627421319 -2147483648 8 0 66047 0;} @font-face {font-family:"/@黑體"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:1 135135232 16 0 262144 0;} @font-face {font-family:"/@宋體"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:宋體; mso-font-kerning:1.0pt;} h1 {mso-style-next:本文; margin-top:17.0pt; margin-right:0cm; margin-bottom:16.5pt; margin-left:0cm; text-align:justify; text-justify:inter-ideograph; line-height:240%; mso-pagination:lines-together; page-break-after:avoid; mso-outline-level:1; font-size:22.0pt; font-family:"Times New Roman"; mso-font-kerning:22.0pt;} h2 {mso-style-next:本文; margin-top:13.0pt; margin-right:0cm; margin-bottom:13.0pt; margin-left:0cm; text-align:justify; text-justify:inter-ideograph; line-height:173%; mso-pagination:lines-together; page-break-after:avoid; mso-outline-level:2; font-size:16.0pt; font-family:Arial; mso-fareast-font-family:黑體; mso-bidi-font-family:"Times New Roman"; mso-font-kerning:1.0pt;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} /* List Definitions */ @list l0 {mso-list-id:1333803225; mso-list-type:hybrid; mso-list-template-ids:1732035604 -564631190 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;} @list l0:level1 {mso-level-number-format:japanese-counting; mso-level-text:第%1章; mso-level-tab-stop:53.25pt; mso-level-number-position:left; margin-left:53.25pt; text-indent:-53.25pt;} @list l1 {mso-list-id:2015305095; mso-list-type:hybrid; mso-list-template-ids:-369974582 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} @list l1:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:21.0pt; mso-level-number-position:left; margin-left:21.0pt; text-indent:-21.0pt; font-family:Wingdings;} @list l1:level2 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:42.0pt; mso-level-number-position:left; margin-left:42.0pt; text-indent:-21.0pt; font-family:Wingdings;} ol {margin-bottom:0cm;} ul {margin-bottom:0cm;} -->
Go 語言學習劄記
魏仁言 2010年5月
第一部分 Go 語言基礎
第一章 Go 語言概述
1.1 Go 語言簡介
Go 語言是Google推 出的一種全新的編程語 言,可以在不損失應用程式效能的情況下降低代碼的複雜性。Google首席軟體工程師羅布派克(Rob Pike) 說:我們之所以開發Go ,是因為過去10 多年間軟體開發的難度令人沮喪。Go 是Google2009 發布的第二款程式設計語言.2009 年7 月份, Google曾發 布了Simple 語言, 它是用來開發Android 應用的一種BASIC 語言.
北京時間2010 年1 月10 日,Go 語言摘得了TIOBE 公布的2009 年年度大獎。該獎項授予在2009 年市場份額增長最多的程式設計語言。
Google資深軟體工 程師羅布· 派克(Rob Pike) 表示,“Go 讓我體驗到了從未有過的開發效率.” 派克表示, 和今天的C++ 或C 一樣,Go 是一種系統語言. 他解釋道,“ 使用它可以進行快速開 發, 同時它還是一個真正的編譯語言, 我們之所以現在將其開源, 原因是我們認為它已經非常有用和強大.”
2007 年, Google把Go 作為一個20% 項目開始研發, 即讓員工抽出本職工作之外時間的20%, 投入在該項目上. 除了派克外, 該項目的成員還其它一些Google工程師.
派克表示, 編譯後Go 代碼的運行速度與C 語言非常接近, 而且編譯速度非常快, 就像在使用一個交 互式語言.
現有程式設計語言均未專門對多核處理器進行最佳化. 派克表示,Go 就是Google工程師為這類程式編寫的一 種語言. 它不是針對編程初學者設計的, 但學習使用它也不是非常困難.Go 支援物件導向, 而且具有真正的封裝(closures) 和反射 (reflection) 等功能.
在學習曲線方面, 派克認為Go 與Java 類似, 對於Java 開發人員來說, 應該能夠輕鬆學會 Go.
之所以將Go 作為一個開源項目發布, 目的是讓開源社區有機會建立更好的工具來使用該語言, 例如 Eclipse IDE 中的外掛程式. 目前還沒有支援Go 的IDE.
在目前Google公開發布的所有網路應用中, 均沒有使用Go. 但是Google已經使用該語言開發了幾個內部 項目.
派克表示,Go 是否會對Google即將推出的Chrome OS 產生影響, 現在還言之尚早, 不過Go 的確可以和Native Client 配合使用. 他表示,“Go 可以讓應用完美的運行在瀏覽器內.” 例如, 使用Go 可以更高效的實現Wave, 無論是在前端還是後台.
Go 同時具有兩種編譯器, 一種是建立在GCC 基礎上的Gccgo, 另外一種是分別針對64 位元x86 和32 位x86 電腦的一套編譯器(6g 和8g ). Google目前 正在研發其對ARM 晶片和Android 裝置的支援. 派克表示,“Android 手機存在的問題是, 我們一直沒有一個數字副處理器.”
1.2 Go 語言特點
Go 是一種功能強大的系統程式設計語言,使用它可以方便快捷並快樂地進行編程。與 C 語言一樣,可以快速並安全地運行,尤其在並行編程方面表現很出色,它還有一個垃圾收集器,用以保證記憶體安全。
歸納起來, Go 有以下優點:
l 簡潔
Go 編寫的代碼簡潔
l 快速
Go 編譯器可以快速地編譯代碼。其運行速度可以與 C 或 C++ 相媲美。
l 安全
Go 是一種型別安全和記憶體安全的語言。 具有記憶體回收( Garbage Collect , GC )功能,能自動回收不再使用的對象。不需要使用者對記憶體進行管理。 Go 有指標,但是沒有指標運算。
l 並行
Go 使用一種輕量級通訊的進程,對於促進系統和伺服器方面編程,從語言方面進行有力的支援,叫做 Goroutines 。如果你想同時運行幾千個 Goroutines, 不需要為記憶體溢出而煩惱,使用它可以對 堆疊溢位說再見了。
l 有趣
Go 可以快速構建,擁有清晰的文法、垃圾收集器、運行時反射、很多類型方法。它可以像動態語言一樣去書寫,但是又具有靜態語言的速度和安全。使用它是一種樂趣。
l 開源
Go 是開源的,免費的,可以很方便地從網路上擷取其原始碼。
本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/savechina/archive/2010/05/20/5612316.aspx