<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hant-TW">
	<id>https://wiki.taigi.ima.org.tw/w/index.php?action=history&amp;feed=atom&amp;title=Go</id>
	<title>Go - 修訂紀錄</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.taigi.ima.org.tw/w/index.php?action=history&amp;feed=atom&amp;title=Go"/>
	<link rel="alternate" type="text/html" href="https://wiki.taigi.ima.org.tw/w/index.php?title=Go&amp;action=history"/>
	<updated>2026-04-12T05:21:23Z</updated>
	<subtitle>本 wiki 上此頁面的修訂紀錄</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://wiki.taigi.ima.org.tw/w/index.php?title=Go&amp;diff=377273&amp;oldid=prev</id>
		<title>TaiwanTonguesApiRobot：​從 JSON 檔案批量匯入</title>
		<link rel="alternate" type="text/html" href="https://wiki.taigi.ima.org.tw/w/index.php?title=Go&amp;diff=377273&amp;oldid=prev"/>
		<updated>2025-08-22T05:32:20Z</updated>

		<summary type="html">&lt;p&gt;從 JSON 檔案批量匯入&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新頁面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Go&amp;#039;&amp;#039;&amp;#039;（閣稱&amp;#039;&amp;#039;&amp;#039;Golang&amp;#039;&amp;#039;&amp;#039;）是 Google 開發的一種靜態強型別、編譯型、並發型，而且有糞埽回收功能的程式語言。&lt;br /&gt;
&lt;br /&gt;
羅伯特 ・ 格瑞史莫、羅榮 ・ 派克佮肯 ・ 湯普遴佇二空空七年九月開始設計 Go，較等咧伊恩 ・ 蘭斯 ・ 泰勒（Ian Lance Taylor）、 拉斯 ・ 考克斯（Russ Cox）加入專案。Go 是因為 Inferno 作業系統所開發的。Go 佇二空空九年十一月正式宣佈推出，成做開放原始碼專案，支援 Linux、macOS、Windows 等作業系統。&lt;br /&gt;
&lt;br /&gt;
佇二空一六年，Go 予軟體評價公司 TIOBE 選為「TIOBE 二空一六年最佳語言」。&lt;br /&gt;
&lt;br /&gt;
目前，Go 每半冬發佈一个二級版本（即從 a . x 升級到 a . y）。&lt;br /&gt;
&lt;br /&gt;
==是咧講==&lt;br /&gt;
&lt;br /&gt;
Go 的語法接近 C 語言，但對著變數的聲明有所無仝款。Go 支援糞埽回收功能。Go 的平行計算模型是以東尼 ・ 霍爾的交談循序程式（CSP）為基礎，採取類似模型的其他的語言套件括 Occam 和 Limbo，Go 嘛有這个模型的特徵呢，比如講通道傳輸。通過 goroutine 佮通道等閣列構造會當建造執行緒池佮管道等等的。佇一鋪八版本內底開放外掛程式（Plugin）的支援，無意味著會當對 Go 中動態載入部份函式。&lt;br /&gt;
&lt;br /&gt;
佮 C + + 相比並，Go 並無包括如列舉、例外處理、繼承、泛型（這是功能佇咧 go 一孵一八中加入）、 斷言、虛擬函式等等的功能，猶毋過有增加切片 ( Slice ) 型、並行、管道、糞埽回收、介面等特性的語言級支援。對斷言的存在，是持負面態度，同時嘛為家己無提供型莫繼承來辯護。&lt;br /&gt;
&lt;br /&gt;
無仝 Java，Go 原生提供關聯陣列（嘛是雜鬥表（Hashes）抑是字典（Dictionaries））。&lt;br /&gt;
&lt;br /&gt;
==批評==&lt;br /&gt;
&lt;br /&gt;
就算講 Go 的官方佮支持者對語言內底袂當用泛型佮異常處理有大量辯解說詞，毋過批評聲也毋捌停過。咧發表 Go 語言二四界空的草案的時陣，官方講無泛型、異常處理佮模組對於 Go 發展造成真大的阻礙，等同承認 Go 無遮的特色是設計錯誤。&lt;br /&gt;
&lt;br /&gt;
Go 的糞埽回收機制一直予臭頭雞仔，一直到一石八版本糞埽回收的功能才有較穩定。毋過就算講遮爾，Go 的糞埽回收抑是遠遠落後 JVM 的 G 一和 ZGC。Discord 的研發團隊佇二空二空年初甚至發表一篇部落格，宣佈共其中一个服務由 Go 轉移到 Rust，理由是 Go 的糞埽回收會致使每二分鐘出現一擺卡頓，並且 Discord 研發團隊測試矣 Go 語言的一鈕八、一孵九、一孵一空版本這个問題攏無改善。&lt;br /&gt;
&lt;br /&gt;
==歷史==&lt;br /&gt;
&lt;br /&gt;
二空空七年，Google 設計的 Go，目的是提高在多核、網路機器（networked machines）、 大型代碼庫（codebases）的情況下開發效率。彼當陣佇咧 Google，設計師想欲解決其他的語言使用中的缺點，但是猶原保留𪜶的優點。&lt;br /&gt;
&lt;br /&gt;
* 靜態型別和執行的時效率。（如：C + +）&lt;br /&gt;
* 通讀性佮易用性。（如：Python 和 JavaScript）&lt;br /&gt;
* 高效能的網路佮多行程。&lt;br /&gt;
&lt;br /&gt;
設計師主要受𪜶之間流傳的「毋通像 C + +」啟發。&lt;br /&gt;
&lt;br /&gt;
Go 佇二空空九年十一月正式宣佈推出，版本一孵空佇二空一二年三月發佈。了後，Go 廣泛應用於 Google 的產品佮濟濟其他組織佮開源專案。&lt;br /&gt;
&lt;br /&gt;
佇二空一六年十一月，Go（一个無襯線體）和 Go Mono 字型（一種等闊字型）分別由著設計師查爾斯 ・ 比格洛和克莉絲 ・ 荷姆斯發布。兩種字型攏採用矣 WGL 四，並且照著 DIN 一千四百五十標準，會用得足深的使用矣 large x-height 和 letterforms。&lt;br /&gt;
&lt;br /&gt;
佇二空一八年八月，原生的圖示換起來。待描述完整但是，Gopher mascot 猶閣有仝款號的名。&lt;br /&gt;
&lt;br /&gt;
佇二空一八年八月，Go 的主要貢獻者發佈了兩个關於語言新功能的「草稿設計—— 泛型佮例外處理，同齊尋求 Go 使用者的回饋。Go 因為在一 . x 時，欠缺對泛型編程的支援佮傷長的例外處理來備受批評。&lt;br /&gt;
&lt;br /&gt;
===版本歷史===&lt;br /&gt;
&lt;br /&gt;
Go 一保證語言規範佮標準庫的主要部份相容。到這陣的 Go 一孵二空發布 e，所有的版本攏履行矣這个承諾。&lt;br /&gt;
逐个主要的 Go 發佈版本會受著支援，到出現兩个新的主要版本為止。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==代碼範例==&lt;br /&gt;
&lt;br /&gt;
===Hello World===&lt;br /&gt;
&lt;br /&gt;
下跤是用 Go 寫成的 Hello World 程式：&lt;br /&gt;
&lt;br /&gt;
===HTTP 彼號網頁侍服器===&lt;br /&gt;
&lt;br /&gt;
透過 Go 干焦需要幾行程式碼就完成 HTTP 彼號網頁侍服器的實在：&lt;br /&gt;
&lt;br /&gt;
===Echo 命令程式===&lt;br /&gt;
&lt;br /&gt;
下跤的例說明了是按怎用 Go 去實現一个像 Unix 中的 Echo 命令程式：&lt;br /&gt;
&lt;br /&gt;
==語言特徵==&lt;br /&gt;
&lt;br /&gt;
===編寫風格===&lt;br /&gt;
&lt;br /&gt;
Go 有定義如下的編寫風格：&lt;br /&gt;
&lt;br /&gt;
一 . 每行程式了後無需要編寫分號 ` ; `。&lt;br /&gt;
二 . 大括號 ` { ` 袂使換行囥。&lt;br /&gt;
三 . ` if ` 判斷式佮 ` for ` 迴箍毋免以小括號包括起來。&lt;br /&gt;
四 . 使用 tab 做排版除了第二點外（換行會產生編譯錯誤）， 佇無符合上述規定的時陣，猶閣會當編譯，但是使用著內建 gofmt 家私頭仔，會自動整理程式碼，予符合規定的編寫風格。&lt;br /&gt;
&lt;br /&gt;
===專案架構===&lt;br /&gt;
&lt;br /&gt;
====module====&lt;br /&gt;
&lt;br /&gt;
Go 採用 module 的概念（佇咧 go 一爿一爿才開始啟用，舊版本請參閱工作區）， 逐个案攏是一个 module，猶閣逐个 module 下底會有一个 ` go . mod ` 的檔案，來管理該 module 所參照的外部庫、開發版本…… 等咧。&lt;br /&gt;
&lt;br /&gt;
一个 module 的資料篋仔 kha-tá-lok-guh 可能如下&lt;br /&gt;
&lt;br /&gt;
` ` `&lt;br /&gt;
go . mod&lt;br /&gt;
hello /&lt;br /&gt;
hello . go&lt;br /&gt;
outyet /&lt;br /&gt;
main . go&lt;br /&gt;
main _ test . go # 測試用的程式&lt;br /&gt;
stringutil /&lt;br /&gt;
reverse . go&lt;br /&gt;
reverse _ test . go # 測試用的程式&lt;br /&gt;
bmp /&lt;br /&gt;
reader . go&lt;br /&gt;
writer . go&lt;br /&gt;
` ` `&lt;br /&gt;
&lt;br /&gt;
然後 go . mod 的內容可能為這个&lt;br /&gt;
&lt;br /&gt;
` ` `&lt;br /&gt;
module example . org / go-mod-sample&lt;br /&gt;
&lt;br /&gt;
go 一孵一一&lt;br /&gt;
&lt;br /&gt;
require (&lt;br /&gt;
github . com / golang / example v 空吱吱 . 空九二十五空二千二百空四分一千二百二十一孵三千六百五十二 e 六桱八千七百七十三 dfca 零&lt;br /&gt;
golang . org / x / image v 空七一 . 零&lt;br /&gt;
)&lt;br /&gt;
` ` `&lt;br /&gt;
&lt;br /&gt;
====工作區====&lt;br /&gt;
&lt;br /&gt;
Go 的工作區佇咧 ` GOPATH `，其實 kha-tá-lok-guh 結構如下：&lt;br /&gt;
&lt;br /&gt;
` ` `&lt;br /&gt;
src&lt;br /&gt;
pkg&lt;br /&gt;
bin&lt;br /&gt;
` ` `&lt;br /&gt;
&lt;br /&gt;
三个 kha-tá-lok-guh 的用途分別為舉例來講，規个案 kha-tá-lok-guh 可能會落去乎：&lt;br /&gt;
&lt;br /&gt;
` ` `&lt;br /&gt;
bin /&lt;br /&gt;
hello # 生成的執行檔&lt;br /&gt;
outyet # 生成的執行檔&lt;br /&gt;
pkg /&lt;br /&gt;
linux _ amd 六十四 /&lt;br /&gt;
github . com / golang / example /&lt;br /&gt;
stringutil . a # 編譯的時，生成的對象檔案&lt;br /&gt;
src /&lt;br /&gt;
github . com / golang / example /&lt;br /&gt;
. git / # 外部 Git 庫的詮釋資料&lt;br /&gt;
hello /&lt;br /&gt;
hello . go # Git 庫的程式碼&lt;br /&gt;
outyet /&lt;br /&gt;
main . go # Git 庫的程式碼&lt;br /&gt;
main _ test . go # Git 庫的程式碼（測試用的程式）&lt;br /&gt;
stringutil /&lt;br /&gt;
reverse . go # Git 庫的程式碼&lt;br /&gt;
reverse _ test . go # Git 庫的程式碼（測試用的程式）&lt;br /&gt;
golang . org / x / image /&lt;br /&gt;
. git / # 外部 Git 庫的詮釋資料&lt;br /&gt;
bmp /&lt;br /&gt;
reader . go # Git 庫的程式碼&lt;br /&gt;
writer . go # Git 庫的程式碼&lt;br /&gt;
&lt;br /&gt;
` ` `&lt;br /&gt;
&lt;br /&gt;
===輕型協程===&lt;br /&gt;
&lt;br /&gt;
Go 的主要特色囥佇咧使用的併行設計，叫做 Goroutine，透過 Goroutine 會當予程式以異步的方式執行，就無需要煩惱一个函式致使程式斷去，所以 Go 嘛非常的適合網路服務。準講有一个程式，內底有兩个函式：&lt;br /&gt;
&lt;br /&gt;
這个時陣透過 Go 予其中一个函式同步執行，按呢就無需要等待這改函式執行了後才會當執行後一个函式。&lt;br /&gt;
&lt;br /&gt;
Goroutine 是類似執行緒的概念，屬於纖程 ( 區別於協程佮執行緒 )。執行緒屬於系統層面，通常來講建立一个新的執行緒會消磨較濟的資源閣管理無簡單；啊若協程的主要是欲作用是提供予一个執行緒內的併發性，煞袂當利用家己的處理器執行緒。而且 Goroutine 就親像輕量級的執行緒，一个 Go 程式會當執行超過數萬个 Goroutine，而且遮的效能攏是原生級的，隨時攏會當關起來、結束，而且運行佇濟个處理器執行緒上。一个核心內底會當有偌个 Goroutine，透過 GOMAXPROCS 參數你會當限制 Gorotuine 會當佔用幾个系統執行緒來避免失控。&lt;br /&gt;
&lt;br /&gt;
佇內建的官方套佇內底嘛不時會當看著 Goroutine 的應用，像講 net / http 中用來監聽網路服務的函式實際上是建立一个不斷執行迴圈的 Goroutine；同時配合矣 epoll 等 IO 多路復用機制維護 Goroutine 的事件回轉。&lt;br /&gt;
&lt;br /&gt;
==編譯器==&lt;br /&gt;
&lt;br /&gt;
當前有兩个 Go 編譯器分支，分別為官方編譯器 gc 和 gccgo。官方編譯器佇初期的時陣是用 C 寫做，後用 Go 重寫對而實現自舉。Gccgo 𪜶是一種使用標準 GCC 成做後端的 Go 編譯器。&lt;br /&gt;
&lt;br /&gt;
官方編譯器支援平台編譯（毋過無支援 CGO）， 允准將原始碼編譯做會當佇目標系統、架構上執行的二進位檔案。&lt;br /&gt;
&lt;br /&gt;
==參考文獻==&lt;br /&gt;
&lt;br /&gt;
==外部連結==&lt;br /&gt;
&lt;br /&gt;
[[分類: 待校正]]&lt;/div&gt;</summary>
		<author><name>TaiwanTonguesApiRobot</name></author>
	</entry>
</feed>