Mac上go的下載安裝教程

来源:https://www.cnblogs.com/jiangxiangxiang/archive/2019/05/22/10903517.html
-Advertisement-
Play Games

下載安裝 官網https://golang.google.cn/dl/下載,安裝 環境變數配置 參考https://www.jianshu.com/p/5c1873eaf3ca Bash 編輯~/.bash_profile文件(vim ~/.bash_profile,進入vim的正常模式,在正常模式 ...


mac上go的下載安裝教程

官網https://golang.google.cn/dl/下載,安裝

環境變數配置

參考https://www.jianshu.com/p/5c1873eaf3ca

  • Bash

編輯~/.bash_profile文件(vim ~/.bash_profile,進入vim的正常模式,在正常模式中按下i, I, a, A等,進入插入模式),添加以下代碼

export GOROOT=/usr/local/Cellar/go/1.10.3/libexec
//GOROOT是golang的安裝路徑,不需要配置,安裝golang之後就已經有了

export GOPATH=/Users/chenxingyi/work/go
//GOPATH不是安裝目錄,並且不能和Go的安裝目錄一樣
//可以配置多個GOPATH,多個GOPATH之間用 : 隔開
//例如:export //GOPATH=/Users/chenxingyi/work/goUsers/chenxingyi/work1/go
//配置結束可以在通過以下幾種方式查詢GOPATH
//1.在命令行輸入 echo $GOPATH
//2.cd $GOPATH 進入GOPATH目錄,pwd顯示當前所在目錄
//3.在配置文件中查看

export GOBIN=

export PATH=$PATH:${GOPATH//://bin:}/bin
//bin 編譯後生成的可執行文件,為了方便執行可執行文件
//可以把此目錄加入到 $PATH 變數中
//如果有多個gopath,那麼使用${GOPATH//://bin:}/bin添加所有的bin目錄)

保存(在正常模式中,按下:(冒號)鍵,會進入命令模式,輸入wq保存文件),然後執行

source ~/.bash_profile
  • Zsh

編輯~/.zshrc文件,添加以下代碼

export GOROOT=/usr/local/Cellar/go/1.10.3/libexec

export GOPATH=/Users/chenxingyi/work/go

export GOBIN=

export PATH=$PATH:${GOPATH//://bin:}/bin

保存,然後執行

source ~/.zshrc

go編譯和安裝一個可運行的應用

  • GOPATH目錄下約定有三個子目錄:src(存放源代碼)、pkg(存放編譯後生成的文件)、bin(編譯後生成的可執行文件)

  • 在go中,目錄名(dirctory)一般和包名(package)保持一致,package是main表示可執行應用;package是其他表示應用包

  • 多級目錄情況下包的引用:$GOPATH/src/github.com/astaxie/beedb 引用的路徑:”github.com/astaxie/beedb”,即相對路徑

    go編譯和安裝一個可運行的應用的流程如下(下麵講的操作是命令行的操作,有助於理解流程):

  1. src下編寫應用包mymath(如果在命令行下操作cd $GOPATH/src 進入編寫源碼的文件夾,mkdir mymath)

  2. 安裝應用(兩種方法):

    1. 進入對應的應用包目錄(命令行下cd mymath),然後執行go install

    2. 在任意的目錄執行如下代碼go install mymath

  3. 安裝完之後,我們可以進入目錄:

    cd $GOPATH/pkg/${GOOS}_${GOARCH}
    //pkg存儲編譯後生成的文件
    //可以先cd $GOPATH/pkg
    //然後ls 就可以看到${GOOS}_${GOARCH}具體是什麼,我的是darwin_amd64
    //可以看到mymath.a,這個.a文件是應用包
  4. 調用這個應用包

    新建 一個package是main應用包mathapp,import調用mymath,這個就是相對於$GOPATH/src的路徑,如果是多級目錄,import裡面要引入多級目錄(xxx/mymath),這時候可以直接go run 文件名.go 運行應用

  5. 編譯程式

    進入應用目錄(main目錄下),執行go build(將程式編譯成二進位文件),在該目錄下會生成一個mathapp的可執行文件(可以執行ls查看到該可執行文件)

  6. /mathapp 輸出結果(運行二進位文件)

  7. 安裝該應用,進入該目錄執行go install,那麼在"$GOPATH/bin/"下增加了一個可執行文件mathapp。設置環境變數的時候將GOPATH/bin加到我們的PATH裡面了,這樣可以在命令行輸入如下命令就可以執行可執行文件mathapp

go程式的整體結構

bin/

​   mathapp

pkg/

​   平臺名/ 如:darwin_amd64、linux_amd64

​        mymath.a

​        github.com/

​             astaxie/

​                  beedb.a

src/

​   mathapp

​         main.go

​   mymath/

​         sqrt.go    

go獲取遠程包

go有一個獲取遠程數據包的工具go get,本質上可以理解為第一步是通過源碼工具clone代碼到src下麵,然後執行 go install

go get -u 例:go get github.com/astaxie/beedb

go build命令

這個命令主要用於編譯代碼。在包的編譯過程中,若有必要,會同時編譯與之相關聯的包。

  1. 如果是普通包,就像我們在1.2節中編寫的mymath包那樣,當你執行go build之後,它不會產生任何文件。如果你需要在$GOPATH/pkg下生成相應的應用包,那就得執行go install。
  2. 如果是main包,當你執行go build之後,它就會在當前目錄下生成一個可執行文件,可直接在當前目錄下執行文件。如果你需要在$GOPATH/bin下生成相應的文件,需要執行go install,或者使用go build -o 路徑/a.exe。
  3. go build命令預設會編譯當前目錄下的所有go文件。如果某個項目文件夾下有多個文件,只想編譯某個文件,就可在go build之後加上文件名,例如go build a.go;
  4. 你也可以指定編譯輸出的文件名,預設情況是你的package名(非main包),或者是第一個源文件的文件名(main包)。(註:實際上,package名在Go語言規範中指代碼中“package”後使用的名稱,此名稱可以與文件夾名不同。預設生成的可執行文件名是文件夾名。)

go install命令

這個命令在內部實際上分成了兩步操作:第一步是生成結果文件(可執行文件或者.a包),第二步會把編譯好的結果移到

$GOPATH/pkg(普通應用包)或者$GOPATH/bin(可執行應用)。

參考書籍:https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/preface.md


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 發佈與訂閱消息系統 在正式討論Apache Kafka (以下簡稱Kafka)之前,先來瞭解發佈與訂閱消息系統的概念, 並認識這個系統的重要性。數據(消息)的發送者(發佈者)不會直接把消息發送給接收 者,這是發佈與訂閱消息系統的一個特點。發佈者以某種方式對消息進行分類,接收者 (訂閱者)訂閱它們,以 ...
  • [toc] 這篇文章主要講 map 的賦值、刪除、查詢、擴容的具體執行過程,仍然是從底層的角度展開。結合源碼,看完本文一定會徹底明白 map 底層原理。 我要說明的是,這裡對 map 的基本用法涉及比較少,我相信可以通過閱讀其他入門書籍瞭解。本文的內容比較深入,但是由於我畫了各種圖,我相信很容易看懂 ...
  • JVM記憶體分為哪幾部分?各個部分的作用是什麼? JVM記憶體分為哪幾部分?各個部分的作用是什麼? JVM記憶體分為哪幾部分?各個部分的作用是什麼? JVM記憶體分為哪幾部分?各個部分的作用是什麼? 1. Java虛擬機記憶體的五大區域 Java的運行離不開Java虛擬機的支持,今天我就跟大家探討一下Java ...
  • 厲害了,2019/05/21 Apache軟體基金會發表博文,宣佈 Dubbo 在 2019/05/20 這天正式畢業,成為 Apache 的頂級項目。 參考:https://blogs.apache.org/foundation/entry/the apache software foundati ...
  • 14.1 基本介紹 -Scala飾運行在Java虛擬機(Java Virtual Machine)之上,因此具有如下特點 1) 輕鬆實現和豐富的Java類庫互聯互通 2) 它既支持面向對象的編程方式,又支持函數式編程 3) 它寫出的程式像動態語言一樣簡潔,但事實上它確是嚴格意義上的靜態語言 14.2 ...
  • Collection集合 數組的長度是固定的,集合的長度是可變的 數組中存儲的是同一類型的元素,可以存儲基本數據類型值。集合存儲的都是對象。而且對象的類型可以不一致。 集合框架 java import java.util. ; public class IteratorDemo{ public st ...
  • 111
    1. 內容大綱 1. 自定義模塊 2. 模塊是什麼? 3. 為什麼要有模塊? 什麼是腳本? 4. 模塊的分類 5. import的使用 第一次導入模塊執行三件事 被導入模塊有獨立的名稱空間 為模塊起別名 導入多個模塊 6. from ... import ... from ... import .. ...
  • 一、TCP簡介 1、TCP介紹 TCP協議,傳輸控制協議(英語:Transmission Control Protocol,縮寫為 TCP)是一種面向連接的、可靠的、基於位元組流的傳輸層通信協議。 TCP通信需要經過創建連接、數據傳送、終止連接三個步驟。 TCP通信模型中,在通信開始之前,一定要先建立 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...