GoLand项⽬中导⼊⾃定义包
问题来源于编写代码时,某些功能需要复⽤,于是我把它们功能提出来放到单独的⽂件中。但是却不知道该怎么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/
|  ├── ...
|  └──
├── other/
|  ├── ...
|  └── ...
└── main/
└──
所以,我们的项⽬应该按这种⽬录存放⽂件。将编写的源代码放⼊src⽬录中。
2.2、GoLand修改Project GOPATH
打开GoLand -> File -> Settings
-> 展开Go -> GOPATH -> 在下⽅的"Project GOPATH"中添加项⽬所在⽂件夹 -> OK
2.3、⽰例:导⼊⾃定义包
在中,引⼊common包下的,并使⽤UtilsFunc()函数:
import (
...
"common" //⽂件必须放在common⽂件夹下,第⼀句声明为package common
)
func funcname() {
.
..
temp := common.UtilsFunc() //调⽤中的函数,需要通过包名common来调⽤
_ = temp
}
3、公共参数和函数的要求
在Go语⾔中严格区分字母⼤⼩写。
如果变量名/函数名/常量名⾸字母⼤写,则可以被其他包访问(公有)
如果变量名/函数名/常量名⾸字母⼩写,则不能被其他包访问(私有)
可以同时声明 str 和 Str 两个变量!其中str只能被本包访问,Str能被其他包访问。
在中声明var str string和var Str string,其他包中查看到的情况:
go语言开发环境搭建参考⽂章
[1]
[2]
搭建Go开发环境(包括Linux、Windows、Mac)、GOPATH⽬录含义、go项⽬⼯程结构、如何使⽤命令⾏安装程序(go install)、跨平台编译、获取远程包、获取gitlab私有库包等可以继续查看第⼀篇参考⽂章。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。