Mac Golang 開發(fā)環(huán)境配置

Mac Golang 開發(fā)環(huán)境配置

Golang 介紹

Go(又稱Golang)是Google開發(fā)的一種靜態(tài)強類型、編譯型、并發(fā)型,并具有垃圾回收功能的編程語言。
由羅伯特·格瑞史莫,羅勃·派克(Rob Pike)及肯·湯普遜于2007年9月開始設計Go,稍后Ian Lance Taylor、Russ Cox加入項目。Go是基于Inferno操作系統(tǒng)所開發(fā)的。Go于2009年11月正式宣布推出,成為開放源代碼項目,支持Linux、macOS、Windows等操作系統(tǒng)。在2016年,Go被軟件評價公司TIOBE 選為“TIOBE 2016 年最佳語言”。

Go的語法接近C語言,但對于變量的聲明有所不同。Go支持垃圾回收功能。Go的并行計算模型是以東尼·霍爾的通信順序進程(CSP)為基礎,采取類似模型的其他語言包括Occam和Limbo,但它也具有pipeline模型的特征,比如通道傳輸。在1.8版本中開放插件(Plugin)的支持,這意味著現(xiàn)在能從Go中動態(tài)加載部分函數(shù)。

與C++相比,Go并不包括如枚舉、異常處理、繼承、泛型、斷言、虛函數(shù)等功能,但增加了 切片(Slice) 型、并發(fā)、管道、垃圾回收功能、接口等特性的語言級支持。Go 2.0版本將支持泛型,對于斷言的存在,則持負面態(tài)度,同時也為自己不提供類型繼承來辯護。

開發(fā)環(huán)境搭建(MaxOS)

安裝 Golang SDK

1.Golang 官網(wǎng),進入下載頁面,選擇對應自己操作系統(tǒng)的版本下載安裝。

2.如果你使用的是 Homebrew 也可以使用 brew install go 來安裝。

安裝成功后一般不需要配置環(huán)境變量,直接在命令行輸入 go env 來演張是否安裝成功。

升級Golang

1.從官網(wǎng)下載最新的安裝程序覆蓋安裝,安裝包會替換原有的程序。

2.如果你是使用的 Homebrew 安裝直接使用 brew upgrade go

關于 GOROOT 和 GOPATH

GOROOT

GOROOT 就是你 go 的安裝目錄,我用的是 MacOS 對應的 GOROOT 就是 /usr/local/go 目錄。Windows 和 Linux 也是同樣的道理。

GOPATH

GOPATH 時go依賴的一個重要環(huán)境變量:$GOPATH ,MacOS 安裝完 GO 后會自動把 /Users/username/go 目錄當作 GOPATH 。在GO的早起版本中,開發(fā)go項目一般每個項目都會有自己獨立的 GOPATH 從 v1.11 后 GO 的包管理方式逐漸轉換為 GOMOD,我們可以在命令行中輸入 go env 通過查看 GO111MODULE=on 這行來判斷是否啟用了 GOMOD ,如果你使用的是v1.13后的版本默認都是開啟的。

自從引用了GOMOD后 GOPATH 的概念逐漸弱化(現(xiàn)在基本都會使用gomod來管理依賴,可以忘掉gopath)。在集成開發(fā)環(huán)境中配置好默認的 GOPATH 后,使用gomod管理依賴,所有項目通過gomod下載的第三方依賴都會放到GOPATH下的pkg目錄。

GOMOD

Golang從誕生之初就一直有個被詬病的問題:缺少一個行之有效的“官方”包依賴管理工具。其原因是在Google內(nèi)部,所有人都是在一個代碼庫上進行開發(fā)的,因此并不是非常需要。但Golang變成一個社區(qū)化的工程語言之后,這個問題被放大了。

1.GOPATH不符合一般開發(fā)者習慣,大部分人更習慣maven、node modules之類的方式
2.GOPATH無法有效的管理版本依賴,沒有一個地方能夠表明依賴包的具體版本號,無法形成有效的版本配套關系

Golang 1.11 版本引入的 go mod ,其思想類似maven:摒棄vendor和GOPATH,擁抱本地庫。

使用gomod也很簡單在工程目錄下執(zhí)行:go mod init {module name},該命令會創(chuàng)建一個go.mod文件。

examples

  • http_demo.go
package main

import (
    "fmt"
    "github.com/asmcos/requests"
)

func main() {
    req := requests.Requests()
    resp, _ := req.Get("https://baidu.com")
    fmt.Println(resp.R.StatusCode)
    fmt.Println(resp.R.Header["Content-Type"])
}

  • go.mod
module HelloWorld

go 1.13

require (
    github.com/asmcos/requests v0.0.0-20181227105501-5384de75ad0b // indirect
)

使用集成開發(fā)環(huán)境開發(fā)Golang程序

在開發(fā)中我使用 Goland 來開發(fā) GO 程序。

1.Preferences > Go > GOROOT 配置你GO的安裝位置

2.Preferences > Go > Global GOPATH 配置你GOPATH位置

這兩項配置后基本上就可以開心的開發(fā)GO程序了。

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

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

  • 備注:本猿翻譯水平有限,請各位看客見諒 翻譯內(nèi)容: go1.11 版本中 go help modules文檔內(nèi)容 ...
    星云數(shù)聯(lián)閱讀 2,636評論 0 1
  • 一、Go的包設計理念 1.代碼盒子 在Go程序中,包是代碼模塊組織的單位,為項目代碼組織結構,提高代碼的可讀性、重...
    GoFuncChan閱讀 591評論 0 0
  • 上上個禮拜我想吃薯條,想去買,然后我媽讓我陪她去超市,結果薯條沒買成,老媽就給我做土豆絲作為補償,結果,燒成了土豆...
    三金二木夕閱讀 143評論 0 1
  • 記得小時候自己是一個特別自律的小孩,小學時候就堅持每天五點多起來去學校跑步,一直學習也很認真,有點死學習那種,...
    一粒童心閱讀 602評論 0 2
  • 窗外,烏云密布,大氣層越來越低,風一陣緊過一陣,竹林在風的吹動下,彎了腰,拼命搖擺,枯黃的竹葉順風而下,朝著我窗戶...
    周嫻玲閱讀 477評論 2 3

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