Golang package

时间:2024-01-15 12:46:56

今天,灵感一现:不能一个文件干到底吧,那要是工程大了怎么办?

答案很简单,“包”啊

GO里的包,看起来很简单,但又不简单

一开始,我想当然的以为就是include 路径一样的问题

事实是,GO以GOPATH环境变量来管理的,其实,从你在应用标准包根本没有路径一说,就应该能猜到这个该死的结果了

好了,下边,我们以一个例子来说明,避免网上那些看似很仔细的说,但就是怎么也说不明白的症结吧!

一 找到你的GOPATH

echo $GOPATH
/root/gopkg //我的位置在这里,你自己的肯定不一样吧,当然,要是你跟我设置一样,那就是这个了

二 我们自己库源码要放入的位置

$GOPATH/src/other

三 gin-1.go , gin-2.go源码

//gin-1.go

package other

import (
  "fmt"
)

func Show1() {
  fmt.Println("1 is ok")
}

//gin-2.go

package other

import (
"fmt"
)

func Show2() {
fmt.Println("2 is ok")
}

四 编译与安装我们的other库

在ohter 父目录下执行

go build other

go install other

然后在$GOPATH/pkg/linux_amd64下会找到们生成库other.a

五 祝贺你,现在你可以用other这个包了

//gin-main.go

package main

import (
  "other"
)

func main() {
  other.Show1()
  other.Show2()
}

//运行

go build gin-main.go

./gin-main
1 is ok
2 is ok

看,我们成功调用了自定义的GO库

开心吧?哈哈哈

Finally:

这个问题,在实际工程开发中意义还是十分巨大的,希望你能理解并应用

当然,别问我,为何你说的这么清楚?网上却找不到这样的博文

应该去问,那些人为何说不明白,哈哈哈哈!