golang中默认以文件夹名作为包名,导入的文件的路径为$GOPATH/src
成都创新互联自2013年创立以来,是专业互联网技术服务公司,拥有项目成都做网站、网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元桂阳做网站,已为上家服务,为桂阳各地企业和个人服务,联系电话:13518219792
例如我们在 $GOPATH/src下面建立一个gopackage的一个文件夹,下面建立一个abc.go的文件,文件内容如下
则我们在包外部使用gopackage包中的函数时,导入格式是这样的:
我们在abc.go文件中需要导出的函数的首字母都是大写的,这是因为 只有首字母大写的标识符才可以导出 ,mutiply(int,int)int函数不可以被导出,编译失败。
当我们使用多个自定义包时如果发生冲突,怎么办呢,我们可以给不同的包提供不同的别名
如果abc.go文件中包名不是文件夹的名字,如
则在外部导入是,golang会自动为该包提供别名
package p2
//整数变量
var Pack1Int int = 42
//浮点变量
var PackFloat = 3.14
//简单函数
func ReturnStr() string {
return "Hello main!"
}
package main
import (
"./p2"
"fmt"
)
//程序入口
func main() {
//定义一个变量
var test1 string
//接收p2包中函数的返回值
test1 = p2.ReturnStr()
//打印函数返回值
fmt.Println("------haliluya---------", test1)
//打印变量
fmt.Println("------haliluya---------", p2.Pack1Int)
fmt.Println("------haliluya---------", p2.PackFloat)
}
p2.ReturnStr() 通过包名调用
mian.go调用名为"pk"的包
所有文件都在项目目录"projectfile"下,其中本地包"pk"的文件在"package"目录下。
使用go mod进行依赖包的管理,因此注意项目根目录下是否有go.mod,没有的一定要先go mod init 项目名称。
import引用时,go.mod把所在目录作为根目录,填写路径时把相对路径写在s5后面。
1.先把要导入的包go build - go install
2.接着在要导入的方法中以: 项目名 / 导入的文件名 的形式导入即可(如下方test(项目名) / chiid(文件名))
当尝试了网上所有方法,仍然发现在主文件.go中或者在其他地方引用自定义包时,自动删除导入的包的情况解决如下:
如你存放地址的包在src/xxx.com中时请通过命令行进入这个文件夹的位置
然后执行go mod init xxx.com/m/v1回车
上述的.../m/v1随便,这个是按照官方的建议这么写的方便维护版本吧?!
再次尝试引入自定义包,引用方式如下:
xxx.com/m/v1
|_test
| |_test.go
|_main.go
import (
"fmt"
"xxx.com/m/v1/test"
)
献给被折磨许久的小伙伴们。。。