【Golang之路】Golang初識 開啓之路

對於該專欄文章,都是本身的學習文章記錄,若是有文章的錯誤理解之處,也歡迎你們直接指出,也很高興和你們一塊兒學習進步。python

Go語言簡介

Go是從2007年底由Robert Griesemer, Rob Pike, Ken Thompson主持開發,後來還加入了Ian Lance Taylor, Russ Cox等人,並最終於2009年11月開源,在2012年早些時候發佈了Go 1穩定版本。程序員

Go語言(簡稱Golang)是雲計算時代的C語言,Go的誕生可以使得程序員有更高的生產效率,Go語言專門針對多處理器系統應用程序的編程進行優化,使用Go編譯的程序能夠和C或C++代碼的速度。並且更加安全,支持並行進程。golang

Go語言就是在C/C++和python之間架起了橋樑,提供了了很快的執行速度,可快速開發,使得變成高性能的語言,也讓開發變得更加迅捷。數據庫

Go語言優點

  • 可直接編譯成機器碼,不依賴其它庫,glibc的版本有要求,部署簡單(直接放一個文件便可)。編程

    • 靜態類型語言,可是有動態語言的感受。
    • 靜態類型的語言:能夠在編譯的時候檢查出隱藏的大多數問題
  • 動態類型的語言:不少包均可以直接使用,使得寫代碼的效率很高。
  • 語言層面而言,支持開發,也是Go語言的特點,使得Go能夠直接充分利用多核,能夠很容易地使用併發,這也是不少公司用做Go作後臺服務器的緣由之一。
  • 內置Runtime,支持垃圾回收,這一特性屬於動態語言的特性之一,對於早期版本Go的GC(垃圾回收機制)不完美,可是足以應對多數狀況。
  • 簡單易學,Go語言的做者有C的基礎。因此不少部分繼承了C的內容,包括大多數語言中的特性:繼承、重載、對象等。
  • 豐富的標準庫,Go語言目前內置了大量的庫,特別是網絡庫。
  • 內置強大的工具,Go語言內置了不少工具鏈,例如gofint工具,自動化格式化代碼。
    跨平臺編譯
  • 內嵌C支持,Go裏面也可直接包含C代碼,利用現有豐富的C庫。

    Go語言的適合用途

  • 服務器編程(處理日誌、數據打包、虛擬機處理、文件系統等),相比於在Go以前,都是C或C++在作相似的事情。
  • 分佈式系統、數據庫代理器等。
  • 網絡編程(應用最廣的領域):包括了Web應用、API應用、下載應用。
  • 內存數據庫:如Google開發的groupcache、couchbase的部分組建。
  • 雲平臺

    環境搭建

    因爲個人是MAC系統,對於Fusion而言,只安裝了Ubuntu系統,因此對於windows安裝環境下學習小夥伴,能夠直接Google Search一下。windows

MAC OS環境下的安裝使用 brew安全

brew install go

或者

brew install golang

Ubuntu系統環境下直接在命令行:服務器

apt install golang-go

在安裝完成以後,可直接使用go  version來查看go是否安裝成功和查看它的版本。網絡

對於Go的環境搭建以後,就是對於編譯器的選擇,我的特別喜歡JetBrains家族中的Goland,具體的安裝能夠Google Search一下。併發

標準命令概述

對於標準命令的概述具體能夠參考:https://studygolang.com/pkgdoc

第一個Go語言

Go 語言的基礎組成有如下幾個部分:

  • 包聲明
  • 引入包
  • 函數 / 函數體
  • 變量
  • 語句 & 表達式
  • 註釋
package main // package main 定義了包名。必須在源文件中非註釋的第一行指明這個文件屬於哪一個包

import (

"fmt" 

) /* import "fmt" 告訴 Go 編譯器這個程序須要使用 fmt 包(的函數,或其餘元素),fmt 包實現了格式化 IO(輸入/輸出)的函數。 */

func main() { // func main() 是程序開始執行的函數(函數的入口)。main 函數是每個可執行程序所必須包含的,通常來講都是在啓動後第一個執行的函數(若是有 init() 函數則會先執行該數)。

   /* 這是hello world的程序 */  //  /*...*/ 是註釋,在程序執行時將被忽略。單行註釋是最多見的註釋形式,你能夠在任何地方使用以 // 開頭的單行註釋。多行註釋也叫塊註釋,均已以 /* 開頭,並以 */ 結尾,且不能夠嵌套使用,多行註釋通常用於包的文檔描述或註釋成塊的代碼片斷。

   fmt.Println("Hello,Go World!") //  fmt.Println(...) 能夠將字符串輸出到控制檯,並在最後自動增長換行字符 \n。 Print 和 Println 這兩個函數也支持使用變量

}

關於包,根據本地測試得出如下幾點:

文件名與包名沒有直接關係,不必定要將文件名與包名定成同一個。文件夾名與包名沒有直接關係,並不是須要一致。同一個文件夾下的文件只能有一個包名,不然編譯報錯。

相關文章
相關標籤/搜索