go環境配置

下載對應版本的 go 版本

https://go.dev/dl/

配置 vim ~/.zshrc

export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin

source ~/.zshrc

>>>>>> go version

goland 配置:

🔍 一、什么是GOPATH?

GOPATH 是舊的項目結構管理方式(Go Modules 出現前),它要求所有代碼必須放在 $GOPATH/src 目錄下,并通過 go get 下載依賴。

  • 默認 GOPATH 是 ~/go。
  • 所有第三方依賴都放在 ~/go/pkg,所有項目放在 ~/go/src。
  • 缺點:代碼必須放在固定位置,很不靈活。

? 二、什么是Go Modules?(Go 1.11+ 推薦使用)

Go Modules 是 Go 推薦的依賴管理方式,從 Go 1.16 開始默認啟用。

優點包括:

  • 不需要依賴 GOPATH。
  • 支持多項目、多模塊開發。
  • 每個項目可以獨立管理依賴(go.mod 就像 Python 的 requirements.txt)。有 go.mod 就是表示 go modules 了
?  go_study git:(main) ? go mod init go_study 
go: creating new go.mod: module go_study
go: to add module requirements and sums:go mod tidy>>>>>go mod init gin-api-template (初始化項目)

含義:

  • 創建了當前項目的模塊管理文件 go.mod。
  • go_study 是你的模塊名(可以是本地名,也可以是 Git 地址)。
  • 這相當于 npm init 或 pip init。

簡單的gin 使用

安裝依賴

go mod tidy>>>>>go get github.com/gin-gonic/gin 
命令作用說明
go get github.com/gin-gonic/gin顯式添加某個依賴會將 gin 添加到 go.mod 的 require 中,并下載到 go.sum
go mod tidy整理依賴(推薦常用)自動添加“用到了但未聲明”的依賴,刪除“聲明了但沒用”的依賴

你沒有寫import:

  • ? 執行 go mod tidy:什么都不干(因為沒用到)。
  • ? 執行 go get:它會強行添加這個依賴(即使沒用到)。

main.go

package mainimport ("fmt""go_study/gin_test"
)func main() {fmt.Println("Hello, Go Modules!")gin_test.GinHttp()
}

gin_test/gin_testa.go

package gin_testimport "github.com/gin-gonic/gin"func GinHttp() {r := gin.Default()r.GET("/ping", func(c *gin.Context) {c.JSON(200, gin.H{"message": "pong",})})r.Run(":8080")
}

運行 main.go 就可以看到了。

Go 導包與函數調用行為

1.多個文件的組織方式

在 Go 中,同一個目錄下的多個 .go 文件,只要 package 名一樣(如 package gin_test)就會視為同一個包,這些文件的內容會被編譯器自動合并成一個整體。

也就是說:

// gin_testa.go
package gin_testfunc GinHttp() {// 實現 A
}// gin_testb.go
package gin_testfunc GinHttp() {// 實現 B
}

👆這種寫法是不允許的,編譯時會報錯:GinHttp redeclared in this block,因為你定義了兩個同名函數在同一個包里,Go 是靜態強類型語言,不允許重復定義同名標識符。

? 和 Python 的對比(重要)

對比項GoPython
包管理編譯期檢查,結構嚴格動態加載,結構靈活
導入行為顯式導入包名后調用函數可以直接導入函數/類
文件作用域同一包下自動合并多個 .go 文件每個 .py 文件都是獨立模塊
  • Go 不像 Python 動態導入模塊那樣“運行到才執行”,而是編譯前統一構建;
  • 同一個 package 下的多個文件函數名不能重復;
  • 如果你希望有兩個同名函數,請把它們放在不同 package下;
  • 合理使用模塊和包組織,是 Go 項目整潔的關鍵。

Go 是一個 面向組合而不是面向繼承 的語言。它沒有傳統 OOP 的 class 關鍵字,但你完全可以通過 struct + method(方法) 實現“類”的大多數功能。

特性Go 中的實現
用 struct 替代
方法func (r *Receiver) Method()
構造函數自己寫一個返回 struct 的函數
繼承不支持,使用組合代替
接口內嵌接口 + duck typing(非常強)
多態接口實現自動判定

配置熱重載

air 是 Go 社區最流行的熱重載工具,類似于 Python 中的 uvicorn --reload。


go install github.com/air-verse/air@latest

?? 安裝后需將 $GOPATH/bin 添加到你的 PATH:

# 確保 GOPATH/bin 加入 PATH
echo 'export PATH=$PATH:$(go env GOPATH)/bin' >> ~/.zshrc
source ~/.zshrc# 驗證 air 安裝成功
which air
air -v

第一步:在項目根目錄運行一次(生成配置文件):

air init

這會在當前目錄生成一個 .air.toml 配置文件。

第二步:運行熱更新服務

在項目根目錄執行:

air

這會自動監控你的 Go 文件,一旦你修改代碼,它會自動重啟服務(像 FastAPI 的 uvicorn --reload 一樣)。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/85319.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/85319.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/85319.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AI Agent智能體:底層邏輯、原理與大模型關系深度解析·優雅草卓伊凡

AI Agent智能體:底層邏輯、原理與大模型關系深度解析優雅草卓伊凡 一、AI Agent的底層架構與核心原理 1.1 AI Agent的基本構成要素 AI Agent(人工智能代理)是一種能夠感知環境、自主決策并執行行動的智能系統。其核心架構包含以下關鍵組件…

【手搓一個原生全局loading組件解決頁面閃爍問題】

頁面閃爍效果1 頁面閃爍效果2 封裝一個全局loading組件 class GlobalLoading extends HTMLElement {constructor() {super();this.attachShadow({ mode: open });}connectedCallback() {this.render();this.init();}render() {this.shadowRoot.innerHTML <style>.load…

unix/linux source 命令,其高級使用

就像在物理學中,掌握了基本定律后,我們可以開始研究更復雜的系統和現象,source 的高級用法也是建立在對其基本行為深刻理解之上的。 讓我們一起探索 source 的高級應用領域: 1. 條件化加載 (Conditional Sourcing) 根據某些條件來決定是否 source 一個文件,或者 source…

DexGarmentLab 論文翻譯

單個 專家 演示 裝扮 15 任務 場景 2500+ 服裝 手套 棒球帽 褲子 圍巾 碗 帽子 上衣 外套 服裝-手部交互 捕捉 搖籃 夾緊 平滑 任務 ...... 投擲 懸掛 折疊 ... 多樣化位置 ... 多樣化 變形 ... 多樣化服裝形狀 類別級 一般化 類別級(有或沒有變形) 服裝具有相同結構 變形 生…

WPF-Prism學習筆記之 “導航功能和依賴注入“

新建空白模板(Prism) 新建好后會有自動創建ViewModels和Views 在"MainWindow.xaml"文件里面標題去綁定了一個屬性"Title"&#xff0c;而"MainWindowViewModel.cs"里面繼承一個非常重要的"BindbleBase"(prism框架里面非常重要的)。所以…

《C++初階之入門基礎》【C++的前世今生】

【C的前世今生】目錄 前言&#xff1a;---------------起源---------------一、歷史背景二、橫空出世---------------發展---------------三、標準立世C98&#xff1a;首個國際標準版本C03&#xff1a;小修訂版本 四、現代進化C11&#xff1a;現代C的開端C14&#xff1a;對C11的…

YOLOv5-入門篇筆記

1.創建環境 conda create -n yolvo5 python3.8 去pytorch.org下載1.8.2的版本。 pip --default-timeout1688 install torch1.8.2 torchvision0.9.2 torchaudio0.8.2 --extra-index-url https://download.pytorch.org/whl/lts/1.8/cu111 github上下載yolov5的zip pip --def…

【PostgreSQL 03】PostGIS空間數據深度實戰:從地圖服務到智慧城市

PostGIS空間數據深度實戰&#xff1a;從地圖服務到智慧城市 關鍵詞 PostGIS, 空間數據庫, 地理信息系統, GIS, 空間查詢, 地理分析, 位置服務, 智慧城市, 空間索引, 坐標系統 摘要 PostGIS是PostgreSQL的空間數據擴展&#xff0c;它將普通的關系數據庫轉變為強大的地理信息系統…

科技修真的解決方案

“科技修真”是一個結合現代科技與修真&#xff08;玄幻&#xff09;元素的創新概念&#xff0c;通常出現在科幻或玄幻文學作品中&#xff0c;但也可能指代現實中的科技與傳統文化、超自然理念的融合探索。以下是幾種可能的“科技修真”方案&#xff0c;涵蓋技術實現、文化融合…

STM32的HAL編碼流程總結(上部)

目錄 一、GPIO二、中斷系統三、USART串口通信四、I2C通信五、定時器 一、GPIO 1.選擇調試類型 在SYS中Debug選擇Serial Wire模式 2.選擇時鐘源 在RCC中將HSE和LSH都選擇為內部晶振 3.時鐘樹配置 4.GPIO配置 在芯片圖上選擇開啟的引腳和其功能 配置引腳的各自屬性 5.工…

java直接獲取MyBatis將要執行的動態sql命令(不是攔截器方式)

目錄 前言 一. 準備數據 1. 傳輸過來的json條件數據 2. mybatis 配置的動態sql 3. 想要的最終會執行的sql并返回給頁面展示 二. 實現方式 三. 最終代碼 前言 1.在平常開發過程中,MyBatis使用時非常多的,一般情況下我們只需要在控制臺看看MyBatis輸出的日志,要不就是實…

機器學習算法-決策樹

今天我們用一個 「相親決策」 的例子來講解決策樹算法&#xff0c;保證你輕松理解原理和實現&#xff01; &#x1f333; 決策樹是什么&#xff1f; 決策樹就像玩 「20個問題」猜謎游戲&#xff1a; 你心里想一個東西&#xff08;比如「蘋果」&#xff09; 朋友通過一系列問題…

2025——》VSCode Windows 最新安裝指南/VSCode安裝完成后如何驗證是否成功?2025最新VSCode安裝配置全攻略

1.VSCode Windows 最新安裝指南: 以下是 2025 年 Windows 系統下安裝 Visual Studio Code(VSCode)的最新指南,結合官方文檔與實際操作經驗整理而成: 一、下載官方安裝包: 1.訪問官網: 打開瀏覽器,進入 VSCode 官方下載頁面https://code.visualstudio.com/Download 2…

【Elasticsearch】suggest

在Elasticsearch中&#xff0c;suggest 是一個非常強大的功能&#xff0c;用于實現自動補全、拼寫糾錯和模糊搜索等功能。它可以幫助用戶更快地找到他們想要的內容&#xff0c;同時提升搜索體驗。以下是關于 suggest 的詳細使用方法和常見場景。 1\. Suggest 的基本概念 sugges…

[SAP] 如何查詢當前屏幕的Tcode?

事務代碼Tcode是SAP中到達特定屏幕的快捷路徑 如何查詢以下屏幕的事務碼Tcode&#xff1f; 要瀏覽當前所使用的屏幕的事務碼&#xff0c;可以選擇System | Status 這里的事務代碼是[VA22]&#xff0c;它是Change Quotation的事務代碼

PostgreSQL的擴展 dblink

PostgreSQL的擴展 dblink dblink 是 PostgreSQL 的一個核心擴展&#xff0c;允許在當前數據庫中訪問其他 PostgreSQL 數據庫的數據&#xff0c;實現跨數據庫查詢功能。 一、dblink 擴展安裝與啟用 1. 安裝擴展 -- 使用超級用戶安裝 CREATE EXTENSION dblink;2. 驗證安裝 -…

ADB推送文件到指定路徑解析

您執行的命令 adb push ota.zip /sdcard/Download 中&#xff0c;目標路徑 /sdcard/Download 是您顯式指定的&#xff0c;因此 ADB 會直接將文件推送到此位置。具體過程如下&#xff1a; 1. 命令結構解析 adb push&#xff1a;ADB 的推送指令。ota.zip&#xff1a;本地計算機上…

Linux 內核中 skb_orphan 的深度解析:從版本差異到核心機制

引言 在 Linux 內核網絡子系統中,struct sk_buff(簡稱 skb)是管理網絡數據包的核心數據結構。skb_orphan 作為其生命周期管理的關鍵函數,負責切斷 skb 與所屬 socket 的關聯,確保數據包在復雜處理流程中的獨立性。本文將從代碼實現、版本差異、使用場景等多個維度,深入解…

03.MySQL表的操作詳解

MySQL表的操作詳解 MySQL 表的操作概述創建表 2.1 創建表的基本語法查看表結構修改表 4.1 新增列 4.2 修改列屬性 4.3 修改列名 4.4 修改表名 4.5 刪除列刪除表 1. MySQL表的操作概述 MySQL表的操作是數據庫開發和管理中的核心內容&#xff0c;主要涉及**數據定義語言&#…

Flink系列文章列表

把寫的文章做一個匯總&#xff0c;會陸續更新的。 Flink流處理原理與實踐&#xff1a;狀態管理、窗口操作與容錯機制-CSDN博客