Go語言與數據庫開發:01-01
一、前言
Google的三位大牛,為了解決在21世紀多核和網絡化環境下越來越複雜的編程問題而發明了go語言,
從2007年9月開始設計和實現,於2009年的11月對外正式發布。從版本的發布曆史來看,go語言是從
Ken Thompson發明的B語言、Dennis M. Ritchie發明的C語言逐步演化過來的,是C語言家族的成員,
因此很多人將Go語言稱為21世紀的C語言。
縱觀這幾年來的發展趨勢,Go語言已經成為雲計算、雲存儲時代最重要的基礎編程語言。
Go語言有著和C語言類似的語法,但是它不僅僅是一個更新的C語言。它還從其他語言借鑒了很多好的
想法,同時避免引入過度的複雜性。 Go語言中和並發編程相關的特性是全新的也是有效的,
同時對數據抽象和麵向對象編程的支持也很靈活。 Go語言同時還集成了自動垃圾收集技術用
於更好地管理內存。
Go語言尤其適合編寫網絡服務相關基礎設施,同時也適合開發一些工具軟件和係統軟件。
目前Go語言已經成為受歡迎的作為無類型的腳本語言的替代者: 因為Go編寫的程序通常比腳本語言運
行的更快也更安全,而且很少會發生意外的類型錯誤。
Go語言還是一個開源的項目,可以免費獲編譯器、庫、配套工具的源代碼。
Go語言編寫的程序無需修改就可以在不同的係統環境下運行。
二、 Go語言的設計哲學
Go語言的編程哲學是簡潔。
正如Rob Pike所說,“軟件的複雜性是乘法級相關的”,通過增加一個部分的複雜性來修複問題
通常將慢慢地增加其他部分的複雜性。通過增加功能和選項和配置是修複問題的最快的途
徑,但是這很容易讓人忘記簡潔的內涵,即使從長遠來看,簡潔依然是好軟件的關鍵因素。
簡潔的設計需要在工作開始的時候舍棄不必要的想法,並且在軟件的生命周期內嚴格區別好
的改變或壞的改變。通過足夠的努力,一個好的改變可以在不破壞原有完整概念的前提下保
持自適應,正如Fred Brooks所說的“概念完整性”;而一個壞的改變則不能達到這個效果,它
們僅僅是通過膚淺的和簡單的妥協來破壞原有設計的一致性。隻有通過簡潔的設計,才能讓
一個係統保持穩定、安全和持續的進化。
Go語言有足夠的類型係統以避免動態語言中那些粗心的類型錯誤,但是Go語言的類型係統相
比傳統的強類型語言又要簡潔很多。。在實踐中Go語言簡潔的類型係統給了程序員帶來了更
多的安全性和更好的運行時性能。
Go語言鼓勵當代計算機係統設計的原則,特別是局部的重要性。它的內置數據類型和大多數
的準庫數據結構都經過精心設計而避免顯式的初始化或隱式的構造函數,因為很少的內存分
配和內存初始化代碼被隱藏在庫代碼中了。比如,Go語言的動態棧使得輕量級線程goroutine
的初始棧可以很小,因此創建一個goroutine的代價很小,創建百萬級的goroutine完全是可行的。
Go程序也很容易學習。
使用Go語言自帶工具構建Go語言項目隻需要使用文件名和標識符名稱, 一個偶爾的特殊注釋來確定所有的
庫、可執行文件、測試、基準測試、例子、以及特定於平台的變量、項目的文檔等;Go語言
源代碼本身就包含了構建規範。
三、Go語言入門
運行環境:
root@ubuntu:~# go version
go version go1.6.2 linux/amd64
設置GOPATH:
root@ubuntu:/home/go# export GOPATH=/home/go
root@ubuntu:/home/go# echo $GOPATH
/home/go
學習一門新語言時,一種儀式性的開場程序就是從那個經典的helloWorld開始:
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
root@ubuntu:/home/go/ch01# go run helloworld.go
Hello, World!
root@ubuntu:/home/go/ch01# go build helloworld.go
root@ubuntu:/home/go/ch01# ls -l
total 2240
-rwxr-xr-x 1 root root 2288216 Jun 30 03:13 helloworld
-rw-r--r-- 1 root root 74 Jun 30 03:10 helloworld.go
root@ubuntu:/home/go/ch01# ./helloworld
Hello, World!
最後更新:2017-07-16 21:32:30