GoLand項目中導入自定義包


問題來源於編寫代碼時,某些功能需要復用,於是我把它們功能提出來放到單獨的utils.go文件中。但是卻不知道該怎么import自己的go文件,使得能調用其中的函數,故做此筆記。供使用GoLand開發的童靴參考。

1、引入:默認GOPATH的解決方法

​ 原理:根據go項目工程結構來看,我們需要在$GOPATH/src目錄下存放go文件,才能正常引用。按照錯誤提示,選擇Create Directory practice at D:/Go/src,再在其中practice文件夾中放入go文件即可正確引用

但我希望把要引用的包和其他代碼就放在同一個項目里,這種方法顯然不行,於是我們需要配置GoLand以便支持自定義包在項目中的導入。


2、修改GOPATH的解決方法

2.1、規范的目錄結構

摘取官方文檔的說法:

Go代碼必須放在工作空間 ($GOPATH) 內。它其實就是一個目錄,其中包含三個子目錄:

  • src 目錄包含Go的源文件,它們被組織成包(每個子目錄都對應一個包)
  • pkg 目錄包含包對象
  • bin 目錄包含可執行命令

go 工具用於構建源碼包,並將其生成的二進制文件安裝到 pkg 和 bin 目錄中。

src 子目錄通常包會含多種版本控制的代碼倉庫 (例如Git或Mercurial), 以此來跟蹤一個或多個源碼包的開發。

.
├── bin/
|   ├── streak	#可執行命令
|   └── todo	#可執行命令
├── pkg/
|   └── windows_amd64/
|       └── ...
└── src/
    ├── common/
    |   ├── ...
    |   └── utils.go
    ├── other/
    |   ├── ...
    |   └── ...
    └── main/
	    └── main.go

​ 所以,我們的項目應該按這種目錄存放文件。將編寫的源代碼放入src目錄中


2.2、GoLand修改Project GOPATH

打開GoLand -> File -> Settings

-> 展開Go -> GOPATH -> 在下方的"Project GOPATH"中添加項目所在文件夾 -> OK


2.3、示例:導入自定義包

main.go中,引入common包下的utils.go,並使用UtilsFunc()函數:

import (
	...
    "common"	//utils.go文件必須放在common文件夾下,第一句聲明為package common
)

func funcname() {
    ...
    temp := common.UtilsFunc()	//調用utils.go中的函數,需要通過包名common來調用
	_ = temp
}

3、公共參數和函數的要求

在Go語言中嚴格區分字母大小寫

  • 如果變量名/函數名/常量名首字母大寫,則可以被其他包訪問(公有
  • 如果變量名/函數名/常量名首字母小寫,則不能被其他包訪問(私有

可以同時聲明 str 和 Str 兩個變量!其中str只能被本包訪問,Str能被其他包訪問。
utils.go中聲明var str stringvar Str string,其他包中查看到的情況:


參考文章

[1] Go語言環境搭建詳解(2020版)

[2] GoLand導入自定義包

搭建Go開發環境(包括Linux、Windows、Mac)、GOPATH目錄含義、go項目工程結構、如何使用命令行安裝程序(go install)、跨平台編譯、獲取遠程包、獲取gitlab私有庫包等可以繼續查看第一篇參考文章


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM