Go引用不同包内方法

发布于 2022-05-18 15:19

    在日常开发中,难免会出现一个包引用另外一个包中方法和属性的场景,那么如何在不将被引用包放到go安装目录的前提下引用需要使用的包呢?有一个简单的小方法,可以成功引用。

    我们知道方法名或者属性名首字母的大小写决定了该方法或者此属性是否是包外可使用,首字母大写则表示包外可使用,首字母小写只能在包内使用。

    首先我新建两个包,包pkg1和包pkg2,我打算pkg1中的代码引用pkg中的方法来打印出来一句话。

    创建好上述的目录pkg1和目录pkg2以后,分别切换到对应的目录使用以下命令进行初始化:go mod init pkg1和go mod init pkg2,执行以后会在对应的目录生成一个go.mod文件。内容大概如下:

    

#pkg1的go.mod内容module pkg1go 1.16
#pkg2的go.mod内容module pkg2go 1.16

    下面要在pkg的go.mod方法中引用pgk1,代码如下:

module pkg1go 1.16require pkg2 v0.0.0replace pkg2 => ../pkg2

    至此引用操作已经准备完成,现在测试一下代码方法和属性的调用,在pkg1下面创建一个main.go的入口文件,代码如下:

package main
import ( "fmt" "pkg2")
func main() { fmt.Println(pkg2.Title) //打印pkg2包中的title变量值 var name string = "Rose" pkg2.Hello(name) //调用pkg2包中的Hello方法}

pkg2包中我们创建一个hello.go文件,代码如下:

package pkg2
import "fmt"
var Title string = "我是包2的标题"
func Hello(name string) { fmt.Printf("Hello %s", name)}

执行pkg1包中的main.go:go run main.go会打印出如下信息:

我是包2的标题Hello Rose

好了,至此我们完成引用包中的方法和属性了。


本文来自网络或网友投稿,如有侵犯您的权益,请发邮件至:aisoutu@outlook.com 我们将第一时间删除。

相关素材