Hello,Golang

来源:https://www.cnblogs.com/cdc1216/archive/2023/03/04/17177459.html
-Advertisement-
Play Games

Hello,Golang 一、開發環境搭建 1. 下載 SDK 1 // Go官網下載地址 2 https://golang.org/dl/ 3 ​ 4 // Go官方鏡像站(推薦) 5 https://golang.google.cn/dl/ 2. 安裝 由於Go語言是一門跨平臺的編譯型語言,我們 ...


Hello,Golang

一、開發環境搭建

1. 下載 SDK

1 // Go官網下載地址
2 https://golang.org/dl/
3 4 // Go官方鏡像站(推薦)
5 https://golang.google.cn/dl/

2. 安裝

由於Go語言是一門跨平臺的編譯型語言,我們只需要在一個平臺下進行開發,最後根據要運行的平臺進行對應的編譯,就可以直接在對應的平臺上運行項目了。下麵我們主要介紹一下Go語言在 Windows 環境上的安裝過程:

  • 第一步,下載Go語言安裝包到本地

        

  • 第二步,傻瓜式安裝,瘋狂下一步,期間可以選擇安裝的路徑

        

  • 第三步,按照上述步驟安裝完成後,打開終端,輸入 go version 命令,如果能查看到相關的信息,證明安裝成功。 

        

3. 配置環境變數

打開終端輸入命令 go env 可以查看安裝 SDK 完成後的相關環境配置信息,其中我們需要重點關註一下框出來的幾個配置項:

相關配置項說明:

  • GO111MODULE: 是否用 go mod 模式來管理項目的依賴

  • GOROOT:go的安裝路徑,需要把安裝目錄的 bin 級目錄配置到電腦的系統環境變數中,才能全局使用 go 指令

        

  • GOPATH:項目代碼存放的路徑,目錄可自定義,需要在電腦的系統環境變數中進行配置,後期工程代碼以及下載的依賴都會存放在這個目錄下

        

  • GOPROXY:鏡像源,用於下載三方依賴,預設值是:GOPROXY=https://proxy.golang.org,direct,但國內訪問不到,建議改成以下值:

https://goproxy.io 或 https://goproxy.cn

 

由於從 Go1.11 版本之後,項目結構有了很大的改動,環境配置項的作用也不一樣,因此環境變數配置有一些差異

3.1 GO 1.11 版本之前的環境配置

GO 1.11 之前版本規定了我們的代碼要寫在固定的位置,因此必須要配置一個GOPATH ,配置好後,我們還需要在 GOPATH 對應的目錄下(新建以下幾個文件夾,以後我們所有的代碼都必須寫在 src 目錄中:

3.2 GO 1.11 版本及之後版本的環境配置

Go 1.11 版本之後,推薦使用 go mod 模式來管理依賴環境,不再強制配置 GOPATH。在安裝完 GO 軟體包後,會給 GOPATH 設置一個預設目錄,且預設情況下 GOROOT下的 bin 目錄及 GOPATH 下的 bin 目錄都已經添加到環境變數中了,我們也不需要額外配置了;此外我們也不用把代碼必須寫在GOPATH 下麵的 src 目錄下了,可以在電腦的任意位置編寫 GO 代碼。

簡而言之,在 1.11 版本後,我們不需要再關註和配置 GOROOTGOPATH 這兩個環境變數了,安裝完成之後,我們只需要配置一下 GO111MODULEGOPROXY 兩項即可。實際上安裝完新版本的軟體包後,GO111MODULE 都是預設開啟的,我們真正需要配置的只有 GOPROXY

二、第一個Go語言程式

我們隨意在某個目錄下新建一個 hello 文件夾,在 hello 目錄中新建一個 main.go 文件,並輸入以下代碼

1 package main  // 聲明 main 包,表明當前是一個可執行程式,一個項目中只能有一個main包
2 3 import "fmt"  // 導入內置 fmt 包
4 5 func main() { // main函數,是程式執行的入口
6     fmt.Println("hello world !")
7 }

在終端中進入 hello 目錄,輸入 go build 命令對代碼進行編譯,編譯通過後會在同級目錄下生成一個可執行文件:

直接運行 exe 程式就可以看到代碼實現的功能了:

三、Go 常用命令

  • go help

go help 可以查詢 go 常用的命令:

  • go build

go build 表示將源代碼編譯成可執行文件。不同平臺下編譯得到的可執行文件類型不一樣,windows下的是 exe 類型文件。可以通過添加 -o 參數來指定編譯過後的文件名,例如:

go build -o helloworld.exe
  • go install

go install 表示安裝的意思,它先編譯源代碼得到可執行文件,然後將可執行文件移動到 GOPATH 的bin目錄下。因為我們的環境變數中配置了GOPATH下的bin目錄,所以我們就可以在任意地方直接執行可執行文件了。

  • go run

go run 命令可以像執行腳本一樣直接執行 .go 文件,且不會產生編譯後的 .exe 文件,例如:

go run main.go

  • go fmt

go fmt 命令可以快速格式化代碼,例如:

go fmt main.go

四、跨平臺編譯

預設 go build 得到的可執行文件都是當前操作系統下的,如果我想在windows下編譯一個linux下可執行文件,那需要怎麼做呢?

只需要指定目標操作系統的平臺和處理器架構即可,然後再執行go build命令,就可以編譯得到目標操作系統對應的可執行文件了

# Windows下編譯得到Linux 64位可執行程式
SET CGO_ENABLED=0  // 禁用CGO,使用了cgo的代碼是不支持跨平臺編譯的
SET GOOS=linux  // 目標平臺是linux
SET GOARCH=amd64  // 目標處理器架構是amd64
​
# Windows下編譯得到Mac 64位可執行程式
SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64

其餘操作系統轉換編譯命令如下:

# Mac下編譯得到Linux可執行程式
CGO_ENABLED=0 
GOOS=linux 
GOARCH=amd64
​
# Mac下編譯得到Windows 64位可執行程式
CGO_ENABLED=0
GOOS=windows
GOARCH=amd64
​
# Linux下編譯得到Mac可執行程式
CGO_ENABLED=0
GOOS=darwin
GOARCH=amd64
​
# Linux下編譯得到Windows 64位可執行程式
CGO_ENABLED=0
GOOS=windows
GOARCH=amd64

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

-Advertisement-
Play Games
更多相關文章
  • 好家伙,本篇為《JS高級程式設計》第十章“期約與非同步函數”學習筆記 1.非重入期約 1.1.可重入代碼(百度百科) 先來瞭解一個概念 可重入代碼(Reentry code)也叫純代碼(Pure code)是一種允許多個進程同時訪問的代碼。 為了使各進程所執行的代碼完全相同,故不允許任何進程對其進行修 ...
  • 本篇文章將介紹如何在組件庫中開發一個組件,其中包括 如何本地實時調試組件 如何讓組件庫支持全局引入 如何在 setup 語法糖下給組件命名 如何開發一個組件 目錄結構 在packages目錄下新建components和utils兩個包,其中components就是我們組件存放的位置,而utils包則 ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 前言 最近看見一個拖拽效果的視頻(抖音:艾恩小灰灰),看好多人評論說跟著敲也沒效果,還有就是作者也不回覆大家提出的一些疑問,本著知其然必要知其所以然的心理,我把實現效果研究了一遍,並且瞭解了其實現原理,這裡給大家復盤其原理,學到就是賺到 ...
  • JavaScript 回調函數屬於閉包? 回調函數本身不一定屬於閉包,但是在某些情況下,它們可能會涉及閉包。 回調函數通常是指在非同步操作完成時執行的函數。它們在 JavaScript 中被廣泛使用,例如在處理 AJAX 請求、定時器、事件處理程式等方面。 在使用回調函數時,如果回調函數引用了外部變數 ...
  • JavaScript 中的一些奇怪問題 JavaScript 在開發過程中可能會出現很多奇怪的問題,以下是一些示例: 1、變數提升問題 變數提升是 JavaScript 中一個常見的問題,特別是當沒有充分理解變數作用域和聲明提升時。以下是一個變數提升導致的問題示例: var a = 1; funct ...
  • html篇之《標簽分類和嵌套規則》 一、常用標簽 (1) <div></div> 一個區塊容器標記,可以包含圖片、表格、段落等各種html元素 (2) <span></span> 沒有實際意義,為了應用樣式 二、標簽分類 (1) 塊級標簽 獨占一行,會換行 包含: <div></div>、<ul>< ...
  • 訪問者模式是一種將演算法與對象結構分離的軟體設計模式。它可以讓你在不修改對象結構的情況下,對對象結構中的元素進行不同的操作。訪問者模式的優點是符合單一職責原則,優秀的擴展性和靈活性。缺點是具體元素對訪問者公佈細節,違反了迪米特原則,而且如果元素類經常變化,會導致訪問者類需要頻繁修改。 訪問者模式適合在 ...
  • 數據字典是系統中基本的必不可少的功能,在多種多樣的系統中,數據字典表的設計都大同小異。但是使用方式確是多種多樣,設計好一套易用的數據字典功能模塊,可以使開發事半功倍。 常用的數據字典使用方式: 直接在SQL語句中LEFT JOIN (當然是不推薦這樣用的) 查詢出原始數據,然後再根據原始數據需要的字 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...