如何在Go语言中导入和使用不同的同名软件包

Python07

如何在Go语言中导入和使用不同的同名软件包,第1张

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()  通过包名调用

先看一下目录结构,注意这里的src名称是必须的,go在设置了GOPATH后,默认会添加src去寻找package,暂未查询是否有方法不按照src查询

根据上面的描述,Go语言中通过包中函数的名称来区分公共函数和私有函数,我们在main函数中是无法调用myPrivateFunc的

此时如果执行通过go run方式执行,会看到如下的提示信息,这与大部分语言对于包管理方式相关,所以我们通过两种不同的方法来让代码执行起来

返回如下,这里面对我们后续执行有影响的两个参数GO111MODULE和GOPATH

如果要使用gopath模式引用包,则需要关闭mod模式

设置GOPATH为当前路径,即main.go所在的路径

此时再查看go env时,GOPATH已经发生改变

我们再次尝试执行代码

可以看到public函数被调用