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来作为前缀引用

猜你喜欢

转载自blog.csdn.net/qq_41768644/article/details/132917186
今日推荐