当前位置: 首页 > news >正文

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 mainimport ("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  workimport ("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/hellogo 1.19require mymod  v1.2.3
replace mymod  => ../yyzc/

hello.go

package mainimport ("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 yyzcimport ("fmt"
)func Helloworld(){fmt.Println("hello world")
}func SumA(i int ,j int) int {var result intresult = i+jreturn 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来作为前缀引用

http://www.lryc.cn/news/167691.html

相关文章:

  • 从原理到实践 | Pytorch tensor 张量花式操作
  • 无涯教程-JavaScript - TRANSPOSE函数
  • Webserver项目解析
  • Spring Cloud 篇
  • vim,emacs,verilog-mode这几个到底是啥关系?
  • 解决npm run build 打包出现XXXX.js as it exceeds the max of 500KB.
  • Java 抖音小程序SDK
  • Vue.js的服务器端渲染(SSR):为什么和如何
  • Gin 打包vue或react项目输出文件到程序二进制文件
  • 深度解析shell脚本的命令的原理之pwd
  • Kafka3.0.0版本——消费者(分区的分配以及再平衡)
  • Kotlin文件遍历FileTreeWalk filter
  • Activiti兼容达梦数据库
  • shell 流程控制
  • 【C++】红黑树插入操作实现以及验证红黑树是否正确
  • 学信息系统项目管理师第4版系列07_项目管理知识体系
  • Leetcode 2851. String Transformation
  • 在PHP8中对数组进行计算-PHP8知识详解
  • Android BottomSheetDialog最大展开高度问题
  • 记录Linux部署人脸修复GFPGAN项目Docker Python 使用
  • 如何编写可重入的函数?
  • 使用纯C语言定义通用型数据结构的方法和示例
  • 数据结构基础8:二叉树oj+层序遍历。
  • Spring注解家族介绍:@RestController
  • rocketmq
  • JAVA成员变量首字母小写,第二个字母大写报错问题(原因:Lombok与Spring冲突)
  • Python入门教程 |Python 错误和异常
  • API商品接口对接使用:从理论到实践
  • 解决stable diffusion webui1.6 wd1.4 tagger加载失败的问题
  • Python学习-实现简单的http服务