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

news2025/1/16 15:43:30

一、文件列表如下

在这里插入图片描述
其中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来作为前缀引用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1031595.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一文熟悉Latex论文排版

相信计算机专业或者写过专业论文的同学都知道,使用Office或者WPS来控制论文的格式有多么复杂和繁琐,甚至有时候花在改论文格式上的时间甚至超过了写论文的时间,因此我们急需要使用一种更加专业实用的排版工具来满足我们的论文排版需求&#x…

API接口学习

ReadyAPI进行API接口测试 FOFA语法 "asmx?wsdl" WSDL 爬虫URL地址 "Swagger" && title"Swagger UI" && country"CN" Swagger 目录扫描,js资源 Webpack 插件识别,js资源 ReadyAPI 工具下…

支付宝这波杀疯了,又开始撒钱了!

就在今天,支付宝又开始给大家发现金红包啦! 这波是支付宝官方推出「金秋消费节」活动,每天都能领大额实体店通用红包。 这次的红包力度非常大!最高可领取 99 元无门槛红包! 领取到红包有两种:一种是实体…

WPF实现轮播图(图片、视屏)

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

【从0学习Solidity】 5. 变量数据存储和作用域 storage/memory/calldata

【从0学习Solidity】 5. 变量数据存储和作用域 storage/memory/calldata 博主简介:不写代码没饭吃,一名全栈领域的创作者,专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构,分享一些项目实战经验以及前沿技术的见解…

计算机遇到MSVCP140.dll丢失问题?全面分析解决方案

随着科技的飞速发展,计算机已经成为人们日常生活和工作中不可或缺的工具。在计算机的使用过程中,有时会出现丢失 MSVCP140.dll 的问题,给用户带来了诸多不便。那么,什么是 MSVCP140.dll?为什么会出现丢失 MSVCP140.dll…

建议收藏《Verilog代码规范笔记_华为》(附下载)

华为verilog编程规范是坊间流传出来华为内部的资料,其贴合实际工作需要,是非常宝贵的资料,希望大家善存。至于其介绍,在此不再赘述,大家可看下图详细了解,感兴趣的可私信领取《Verilog代码规范笔记_华为》。…

批量调整视频饱和度和色度,提升你的视频剪辑效率!

作为一名视频剪辑师,你是否经常为如何高效地调整多个视频的饱和度和色度而烦恼?现在,我们为你提供了一种简单、快速、准确的方法,帮助你轻松解决这个问题! 首先我们要进入好简单批量智剪,并在左侧的板块栏…

MySQL详细案例 1:MySQL主从复制与读写分离

文章目录 1. MySQL主从复制1.1 使用场景1.2 MySQL的复制类型1.3 主从复制的工作过程1.4 实现MySQL主从复制1.4.1 前置准备1.4.2 主服务器mysql配置1.4.3 从服务器1 mysql配置1.4.3 从服务器2 mysql配置1.4.4 测试 1.5 主从复制的3种同步模式1.5.1 异步复制(Asynchro…

如何自动获取短信验证码?

点击下方关注我,然后右上角点击...“设为星标”,就能第一时间收到更新推送啦~~~ 这篇文章通过解决实际项目开发中遇到的如何自动获取短信验证码的问题,进一步讲述在Java中如何使用正则。 Java中如何使用正则 Java中正则相关类位于java.util.r…

分享从零开始学习网络设备配置--任务3.5 使用静态路由实现网络连通

任务描述 某公司规模较小,该公司的网络管理员经过考虑,决定在公司的路由器、交换机与运营商路由器之间使用静态路由,实现网络的互连。 静态路由一般适用于比较简单的网络环境。在这样的环境中,网络管理员应非常清楚地了解网络…

[C++随笔录] vector模拟实现

vector模拟实现 基本结构天选之子构造拷贝构造析构operator 空间reserveresizesize && capacity 增insertpush_back 删erasepop_back 查 && 改swapoperator[] 源码 基本结构 // 可以是不同类型, 用类模板 template <class T> class vector { public:// 源…

Spring学习笔记1 启示录

写段代码,引出Spring的好处 创建个空工程,然后在工程里建模块 可能是IEAD版本问题,每次建新的空工程,都需要退出重进 设置下maven和Encoding 新建模块 持久层接口 持久层实现类 业务层接口 业务层实现类 控制层(表现层) 建个测试类测试 分析这个程序存在的问题 假设现在新需…

git和github的入门操作

之前因为工作中用的都是SVN版本控制工具&#xff0c;没接触过git和github&#xff0c;现在开始深入自学Django框架技术后&#xff0c;看到官网推荐使用git&#xff0c;然后这两天网上查阅了很多文章教程&#xff0c;学到入门操作需要学习的点&#xff0c;太多的知识点要后面慢慢…

PostgreSQL 数据库实现公网远程连接

文章目录 前言1. 安装postgreSQL2. 本地连接postgreSQL3. Windows 安装 cpolar4. 配置postgreSQL公网地址5. 公网postgreSQL访问6. 固定连接公网地址7. postgreSQL固定地址连接测试 前言 PostgreSQL是一个功能非常强大的关系型数据库管理系统&#xff08;RDBMS&#xff09;,下…

有没有免费的云渲染平台?哪家云渲染平台收费更合理?

&#xfeff;如今&#xff0c;越来越多的设计师开始使用云渲染平台来加快渲染速度并降低成本。许多人都想知道是否有免费的云渲染平台&#xff0c;或者说哪家云渲染平台收费更合理。在本文中&#xff0c;小编将详细介绍这些问题&#xff0c;帮助您更好地了解和选择适合您需求的…

同一份数据全域共享,HashData UnionStore实时性背后的故事

时至今日&#xff0c;数据已经被越来越多的企业视为发展的战略资源&#xff0c;而云数仓则是数据发挥重要价值的关键媒介。云数仓的出现&#xff0c;不仅改变了传统数据仓库的服务模式&#xff0c;更给用户带来了应对海量、新型数据的存储和处理能力&#xff0c;为满足业务现代…

MES管理系统在生产中的应用及智能工厂的构建思路

在当今制造业中&#xff0c;随着信息化技术和智能化的不断发展&#xff0c;MES生产管理系统已成为工厂生产的核心组成部分。MES管理系统不仅能够提高生产效率&#xff0c;还可以优化生产流程&#xff0c;提升产品质量。本文将详细介绍MES管理系统在工厂生产中的应用以及构建智能…

PowerShell切换多个java版本

安装jdk1.8 和 jdk17 下载jdk 前往 oracle官网下载 配置环境变量 变量名 CLASSPATH变量值 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar效果图&#xff1a; 变量名&#xff08;jdk1.8同理&#xff09; JAVA_HOME17变量值 C:\Program Files\Java\jdk-17效果图&#xff1…

更快,更稳,更智能,科聪穿梭车(RGV)快速构建方案!

随着自动化物流发展&#xff0c;密集存储得到越来越广泛地应用&#xff0c;已经是现代物流的重要组成部分之一。作为密集存储系统中关键设备之一&#xff0c;穿梭车&#xff08;RGV&#xff09;越来越受到大家的重视。 穿梭车&#xff08;RGV&#xff09;是一种智能机器人&…