golang --- module-aware 模式下 包引入

一、文件列表如下

在这里插入图片描述
其中helloWorld目录是main包(package)所在目录,即该目录下所有的goy源文件(不包含子目录)属于main包,hello.go是mian函数所在文件

二、module-aware 模式启用

开启mod模式

go env -w GO111MODULE=on

在mod模式下,main包中需要初始化一个go,mod文件,语法如下

go mod init modulepath

本例中初始化go.mod文件如下:

go mod init  my/hello

go.mod文件内容如下

module my/hello
go 1.19

三、同一模块内的调用,即在hello.go中调用greet.go中定义的函数

hello.go

package main
func main() {
    // Get a greeting message and print it.
    //message := Hello("huster")
    //fmt.Println(message)
    
    Helloworld()   
    
}

greet.go

package main
import (
	"fmt"
)
func Helloworld(){
    fmt.Println("hello world")
}

运行结果:

PS C:\Users\love1\Documents\technology\go\moduleMode\helloWorld> go run .
hello world
PS C:\Users\love1\Documents\technology\go\moduleMode\helloWorld> 

四、在某一模块中调用子目录中定义的函数,即在hello.go中调用service/work.go中定义的函数

hello.ho

package main

import (
    "my/hello/service"
)
func main() {
    // Get a greeting message and print it.
    //message := Hello("huster")
    //fmt.Println(message)
    
    Helloworld()   
    work.Work()    
}

service/work.go

package  work


import (
    "fmt"   
)

func Work() {  
    fmt.Println("I am a worker"    
}

以上得知,模块下的子目录可以不初始化go.mod文件,并且引入方式如下:

import (
    "my/hello/service"
)

my/hello 是该模块的模块路径,service是该模块所在目录的子目录

五、引用其他自定义模块

helloWorld 目录中的模块 引用 yyzc目录中模块中定义的变量。首先需要在yyzc目录下初始化一个go,mod文件,然后在helloWorld中的go.mod引用此模块,示例如下:

module my/hello

go 1.19

require mymod  v1.2.3
replace mymod  => ../yyzc/

hello.go

package main

import (
    "my/hello/service"
    "mymod"
    "fmt"
)

func main() {
    // Get a greeting message and print it.
    //message := Hello("huster")
    //fmt.Println(message)
    
    Helloworld()   
    work.Work()
    fmt.Println(yyzc.SumA(1,2))
    yyzc.Helloworld()
    
}

sum.go

package yyzc

import (
	"fmt"
)

func Helloworld(){
    fmt.Println("hello world")
}

func SumA(i int ,j int) int {

    var result int

	result = i+j

	return result
}

执行结果如下:

PS C:\Users\love1\Documents\technology\go\moduleMode\helloWorld> go run .
hello world
i am a worker
3
hello world
PS C:\Users\love1\Documents\technology\go\moduleMode\helloWorld> 

注意 当引用函数的时候,还是要通过packagename来作为前缀引用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值