Golang(一)簡(jiǎn)介配置和HelloWorld

介紹

什么是Golang

Go也被稱為Golang,它是由谷歌創(chuàng)建的一種開源、編譯和靜態(tài)類型的編程語(yǔ)言。

Golang的主要目標(biāo)是使高可用性和可伸縮的web應(yīng)用程序的開發(fā)變得簡(jiǎn)單易行。

為什么選擇Golang

當(dāng)有很多其他語(yǔ)言(如python、ruby、node.js)時(shí),為什么選擇Golang作為服務(wù)端編程語(yǔ)言呢?

  • 并發(fā)是語(yǔ)言的一個(gè)固有部分。因此編寫多線程程序是小菜一碟。這是通過(guò)Goroutines和channel實(shí)現(xiàn)的,我們將在后面的教程中討論。

  • Golang是一種編譯語(yǔ)言。源代碼編譯成原生二進(jìn)制。這在解釋語(yǔ)言(如nodejs中使用的JavaScript)中丟失了。

  • 語(yǔ)言規(guī)范非常簡(jiǎn)單。整個(gè)規(guī)范適合于一個(gè)頁(yè)面,您甚至可以使用它來(lái)編寫自己的編譯器:)

  • go編譯器支持靜態(tài)鏈接。所有的go代碼都可以靜態(tài)地鏈接到一個(gè)大的fat二進(jìn)制文件中,并且可以輕松地部署到云服務(wù)器中,而不用擔(dān)心依賴關(guān)系。

安裝

在Mac、Windows和Linux三個(gè)平臺(tái)上都支持Golang。您可以從https://golang.org/dl/下載相應(yīng)平臺(tái)的二進(jìn)制文件。

mac系統(tǒng)安裝并配置

安裝

雙擊 pkg 包,順著指引,即可安裝成功。 在命令行輸入 go version,獲取到 go 的version,則代表安裝成功。

配置環(huán)境變量

  1. 打開終端輸入cd ~進(jìn)入用戶主目錄;
  2. 輸入ls -all命令查看是否存在.bash_profile;
  3. 存在既使用vim .bash_profile打開文件;
  4. 輸入 i 進(jìn)入vim編輯模式;
  5. 輸入下面代碼, 其中 GOPATH: 日常開發(fā)的根目錄。GOBIN:GOPATH下的bin目錄。
export GOPATH=/Users/yourname/go

export GOBIN=$GOPATH/bin

export PATH=$PATH:$GOBIN
  1. 點(diǎn)擊ESC,并輸入:wq保存并退出編輯。可輸入vim .bash_profile 查看是否保存成功。
  2. 輸入source ~/.bash_profile 完成對(duì)golang環(huán)境變量的配置,配置成功沒(méi)有提示。
  3. 輸入go env 查看配置結(jié)果。

搭建開發(fā)工具

安裝好atom工具,然后安裝go-plus插件和atom-terminal-panel插件。

安裝go-plus插件

右上角Atom---preferences

安裝atom-terminal-panel插件

第一個(gè)程序:HelloWorld

編寫

打開編輯器創(chuàng)建一個(gè)新的helloworld.go文件,并輸入以下內(nèi)容:

package main

import "fmt"

func main() {
   /* 輸出 */
   fmt.Println("Hello, World!")
}

執(zhí)行g(shù)o程序

打開命令行提示符,進(jìn)入helloworld.go所在的目錄,輸入go run helloworld.go命令并觀察運(yùn)行結(jié)果。

yuyangdeMacBook-Pro:~ yuyang$ cd /Users/yuyang/go/study 
yuyangdeMacBook-Pro:study yuyang$ go run helloworld.go
Hello,World!

解釋說(shuō)明

package

  • 在同一個(gè)包下面的文件屬于同一個(gè)工程文件,不用import包,可以直接使用
  • 在同一個(gè)包下面的所有文件的package名,都是一樣的
  • 在同一個(gè)包下面的文件package名都建議設(shè)為是該目錄名,但也可以不是

import

import “fmt” 告訴 Go 編譯器這個(gè)程序需要使用 fmt 包的函數(shù),fmt 包實(shí)現(xiàn)了格式化 IO(輸入/輸出)的函數(shù)。

可以是相對(duì)路徑也可以是絕對(duì)路徑,推薦使用絕對(duì)路徑(起始于工程根目錄)。

  1. 點(diǎn)操作。我們有時(shí)候會(huì)看到如下的方式導(dǎo)入包
import(
    . "fmt"
)

這個(gè)點(diǎn)操作的含義就是這個(gè)包導(dǎo)入之后在你調(diào)用這個(gè)包的函數(shù)時(shí),你可以省略前綴的包名,也就是前面你調(diào)用的fmt.Println("hello world")可以省略的寫成Println("hello world")。

  1. 別名操作。別名操作顧名思義我們可以把包命名成另一個(gè)我們用起來(lái)容易記憶的名字
import(
    f "fmt"
)

別名操作的話調(diào)用包函數(shù)時(shí)前綴變成了我們的前綴,即f.Println("hello world")。

  1. _操作。這個(gè)操作經(jīng)常是讓很多人費(fèi)解的一個(gè)操作符,請(qǐng)看下面這個(gè)import
import (
  "database/sql"
  _ "github.com/ziutek/mymysql/godrv"
)

_操作其實(shí)是引入該包,而不直接使用包里面的函數(shù),而是調(diào)用了該包里面的init函數(shù)。

main與init

  • 這兩個(gè)函數(shù)在定義時(shí)不能有任何的參數(shù)和返回值
  • 雖然一個(gè)package里面可以寫任意多個(gè)init函數(shù),但推薦只用一個(gè)
  • Go程序會(huì)自動(dòng)調(diào)用init()main()
  • 每個(gè)package中的init函數(shù)都是可選的,但package main就必須包含一個(gè)main函數(shù)
  • 先調(diào)用init函數(shù),再調(diào)用main函數(shù)
  • 運(yùn)行程序,必須要運(yùn)行存在main函數(shù)的go文件

初始化順序

程序的初始化和執(zhí)行都起始于main包。如果main包還導(dǎo)入了其它的包,那么就會(huì)在編譯時(shí)將它們依次導(dǎo)入。有時(shí)一個(gè)包會(huì)被多個(gè)包同時(shí)導(dǎo)入,那么它只會(huì)被導(dǎo)入一次(例如很多包可能都會(huì)用到fmt包,但它只會(huì)被導(dǎo)入一次,因?yàn)闆](méi)有必要導(dǎo)入多次)。當(dāng)一個(gè)包被導(dǎo)入時(shí),如果該包還導(dǎo)入了其它的包,那么會(huì)先將其它包導(dǎo)入進(jìn)來(lái),然后再對(duì)這些包中的包級(jí)常量和變量進(jìn)行初始化,接著執(zhí)行init函數(shù)(如果有的話),依次類推。等所有被導(dǎo)入的包都加載完畢了,就會(huì)開始對(duì)main包中的包級(jí)常量和變量進(jìn)行初始化,然后執(zhí)行main包中的init函數(shù)(如果存在的話),最后執(zhí)行main函數(shù)。

編碼規(guī)范

注釋

  • 單行注釋是最常見的注釋形式,你可以在任何地方使用以 // 開頭的單行注釋

  • 多行注釋也叫塊注釋,均已以 /* 開頭,并以 */ 結(jié)尾,且不可以嵌套使用,多行注釋一般用于包的文檔描述或注釋成塊的代碼片段

標(biāo)識(shí)符

當(dāng)標(biāo)識(shí)符(包括常量、變量、類型、函數(shù)名、結(jié)構(gòu)字段等等)以一個(gè)大寫字母開頭,如:Group1,那么使用這種形式的標(biāo)識(shí)符的對(duì)象就可以被外部包的代碼所使用(客戶端程序需要先導(dǎo)入這個(gè)包),這被稱為導(dǎo)出(像面向?qū)ο笳Z(yǔ)言中的 public);標(biāo)識(shí)符如果以小寫字母開頭,則對(duì)包外是不可見的,但是他們?cè)谡麄€(gè)包的內(nèi)部是可見并且可用的(像面向?qū)ο笳Z(yǔ)言中的 private )。

語(yǔ)句的結(jié)尾

  • Go語(yǔ)言中是不需要類似于Java需要冒號(hào)結(jié)尾,默認(rèn)一行就是一條數(shù)據(jù)

  • 如果你打算將多個(gè)語(yǔ)句寫在同一行,它們則必須使用;

原文:第1章-簡(jiǎn)介和配置
作者:黎躍春

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容