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

GO语言-导入自定义包

文章目录

  • 1. 项目目录结构
  • 2. 创建自定义包
  • 3. 初始化模块
  • 4. 导入自定义包
  • 5. 相对路径导入

在Go语言中导入自定义包需要遵循一定的目录结构和导入规则。以下是详细指南(包含两种方式):

1. 项目目录结构

方法1:适用于Go 1.11+ ,使用 Go Modules 管理依赖。
Go Modules(go.mod) 是官方推荐的依赖管理工具,自 Go 1.11(2018年) 起引入,并在 Go 1.16(2021年) 后成为默认模式。
也可使用go help查看是否有该工具。

myproject/
├── go.mod         // 模块定义文件
├── main.go        // 主程序
└── mypackage/     // 自定义包└── mypackage.go

方法2、如果你的 Go 版本较旧(如 Go 1.10 或更早),确实没有 go mod 功能,而是使用 GOPATH 模式管理包。这里则需要手动导入包。新版本该功能向下兼容。

myproject/
├── main.go        // 主程序
└── mypackage/     // 自定义包└── mypackage.go

2. 创建自定义包

在mypackage/mypackage.go中:

package mypackage  // 包声明必须与目录名一致import "fmt"// 可导出的函数(首字母大写)
func SayHello() {fmt.Println("Hello from mypackage!")
}// 可导出的变量
const Version = "1.0.0"

3. 初始化模块

适用于Go 1.11+ 版本的方法一。
在项目根目录执行:

bash
go mod init github.com/yourusername/myproject

这会创建go.mod文件,内容类似:

module github.com/yourusername/myprojectgo 1.21

4. 导入自定义包

适用于Go 1.11+ 版本的方法一。

package mainimport ("fmt""github.com/yourusername/myproject/mypackage" // 导入自定义包
)func main() {// 调用自定义包中的公共函数mypackage.SayHello()// 访问自定义包中的公共变量fmt.Println("Package version:", mypackage.Version)
}

5. 相对路径导入

适用于Go 1.11以下 版本的方法二。

package mainimport "fmt"
import "./mypackage" // 不推荐长期使用func main() {// 调用自定义包中的公共函数mypackage.SayHello()// 访问自定义包中的公共变量fmt.Println("Package version:", mypackage.Version)
}

相关文章:

GO语言-导入自定义包

文章目录 1. 项目目录结构2. 创建自定义包3. 初始化模块4. 导入自定义包5. 相对路径导入 在Go语言中导入自定义包需要遵循一定的目录结构和导入规则。以下是详细指南(包含两种方式): 1. 项目目录结构 方法1:适用于Go 1.11 &#…...

java基础-package关键字、MVC、import关键字

1.package关键字: (1)为了更好管理类,提供包的概念 (2)声明类或接口所属的包,声明在源文件首行 (3)包,属于标识符,用小写字母表示 &#xff0…...

[6-2] 定时器定时中断定时器外部时钟 江协科技学习笔记(41个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 V 30 31 32 33 34 35 36 37 38 39 40 41...

第五节:对象与原型链:JavaScript 的“类”与“继承”

📌 第五节:对象与原型链:JavaScript 的“类”与“继承” 目标:理解对象创建、原型继承、this 绑定,掌握类语法与原型设计模式,实现模块化组件开发。 一、对象基础:数据的“容器” 1. 对象字面…...

本地的ip实现https访问-OpenSSL安装+ssl正式的生成(Windows 系统)

1.下载OpenSSL软件 网站地址:Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions 安装: 一直点击下一步就可以了 2.设置环境变量 在开始菜单右键「此电脑」→「属性」→「高级系统设置」→「环境变量」 在Path 中添加一个: xxxx\OpenSSL-…...

Spring Boot + MyBatis-Plus 高并发读写分离实战

引言 在高并发场景下,单一数据库实例往往成为性能瓶颈。数据库读写分离通过将读操作和写操作分配到不同的数据库实例,有效缓解主库压力,提升系统吞吐量。MyBatis-Plus 作为一款强大的持久层框架,结合 Spring Boot 能够轻松实现读…...

HarmonyOS 【诗韵悠然】AI古诗词赏析APP开发实战从零到一系列(二、项目准备与后台服务搭建)

在开发一款面向HarmonyOS平台的应用程序——【诗韵悠然】AI古诗词赏析APP时,选择了流行Go语言作为后端开发语言,并使用了go-zero微服务框架来搭建服务接口。本文将详细介绍项目准备和后台服务搭建的过程,帮助大家更好地理解和掌握go-zero框架…...

【PmHub后端篇】PmHub中基于自定义注解和AOP的服务接口鉴权与内部认证实现

1 引言 在现代软件开发中,尤其是在微服务架构下,服务接口的鉴权和内部认证是保障系统安全的重要环节。本文将详细介绍PmHub中如何利用自定义注解和AOP(面向切面编程)实现服务接口的鉴权和内部认证,所涉及的技术知识点…...

多模态AI新纪元:Vertex AI Gemini与Spring AI深度集成实践

企业级AI集成进阶:Spring AI与Vertex AI Gemini的配置与调优实战 一、前沿技术:多模态模型的企业级配置范式 在生成式AI技术快速迭代的当下,企业级应用对模型配置的精细化需求日益增长。Vertex AI Gemini作为Google推出的多模态大模型&…...

大语言模型RLHF训练框架全景解析:OpenRLHF、verl、LLaMA-Factory与SWIFT深度对比

引言 随着大语言模型(LLM)参数规模突破千亿级,基于人类反馈的强化学习(RLHF)成为提升模型对齐能力的关键技术。OpenRLHF、verl、LLaMA-Factory和SWIFT作为开源社区的四大标杆框架,分别通过分布式架构、混合…...

开源AI数字人分身克隆小程序源码系统深度剖析:从搭建到应用

在人工智能与小程序生态深度融合的当下,开源 AI 数字人分身克隆小程序源码成为开发者的热门工具。从搭建基础环境到实现实际应用,这一过程涉及多项技术与复杂流程。本文将带您深入剖析开源 AI 数字人分身克隆小程序源码,揭开其从搭建到应用的…...

ETL背景介绍_1:数据孤岛仓库的介绍

1 ETL介绍 1.1 数据孤岛 随着企业内客户数据大量的涌现,单个数据库已不再足够。为了储存这些数据,公司通常会建立多个业务部门组织的数据库来保存数据。比如,随着数据量的增长,公司通常可能会构建数十个独立运行的业务数据库&am…...

Linux系统:虚拟文件系统与文件缓冲区(语言级内核级)

本节重点 初步理解一切皆文件理解文件缓冲区的分类用户级文件缓冲区与内核级文件缓冲区用户级文件缓冲区的刷新机制两级缓冲区的分层协作 一、虚拟文件系统 1.1 理解“一切皆文件” 我们都知道操作系统访问不同的外部设备(显示器、磁盘、键盘、鼠标、网卡&#…...

智能体的典型应用:自动驾驶、智能客服、智能制造、游戏AI与数字人技术

本文为《React Agent:从零开始构建 AI 智能体》专栏系列文章。 专栏地址:https://blog.csdn.net/suiyingy/category_12933485.html。项目地址:https://gitee.com/fgai/react-agent(含完整代码示​例与实战源)。完整介绍…...

【技巧】使用UV创建python项目的开发环境

回到目录 【技巧】使用UV创建python项目的开发环境 0. 为什么用UV 下载速度快、虚拟环境、多版本python支持、清晰的依赖关系 1. 安装基础软件 1.1. 安装python 下载地址:https://www.python.org/downloads/windows/ 1.2. 安装UV > pip install uv -i ht…...

什么是时序数据库?

2025年5月13日,周二清晨 时序数据库(Time Series Database,TSDB)是一种专门用于高效存储、管理和分析时间序列数据的数据库系统。时间序列数据是指按时间顺序记录的数据点,通常包含时间戳和对应的数值或事件&#xff0…...

react父组件往孙子组件传值Context API

步骤&#xff1a; 创建一个 Context 在父组件中用 Provider 提供值 在孙子组件中用 useContext 消费值 // 创建 Context const MyContext React.createContext();// 父组件 const Parent () > {const value "Hello from parent";return (<MyContext.Provid…...

2025年第十六届蓝桥杯大赛软件赛C/C++大学B组题解

第十六届蓝桥杯大赛软件赛C/C大学B组题解 试题A: 移动距离 问题描述 小明初始在二维平面的原点&#xff0c;他想前往坐标(233,666)。在移动过程中&#xff0c;他只能采用以下两种移动方式&#xff0c;并且这两种移动方式可以交替、不限次数地使用&#xff1a; 水平向右移动…...

国联股份卫多多与七腾机器人签署战略合作协议

5月13日&#xff0c;七腾机器人有限公司&#xff08;以下简称“七腾机器人”&#xff09;市场部总经理孙永刚、销售经理吕娟一行到访国联股份卫多多&#xff0c;同卫多多/纸多多副总裁、产发部总经理段任飞&#xff0c;卫多多机器人产业链总经理郭碧波展开深入交流&#xff0c;…...

python学习笔记七(文件)

文章目录 Python 文件操作与异常处理全面指南一、文件基本知识1. 文件类型2. 文件操作基本步骤 二、文件操作1. 打开文件2. 读取文件内容3. 写入文件4. 关闭文件5. 使用with语句&#xff08;推荐&#xff09; 三、CSV文件操作1. 使用csv模块2. 读取CSV文件3. 写入CSV文件 四、异…...

WebGL 开发的前沿探索:开启 3D 网页的新时代

你是否曾好奇&#xff0c;为何如今网页上能呈现出如同游戏般逼真的 3D 场景&#xff1f;这一切都要归功于 WebGL。它看似神秘&#xff0c;却悄然改变着我们浏览网页的体验。以往&#xff0c;网页内容大多局限于二维平面&#xff0c;可 WebGL 打破了这一限制。它究竟凭借什么&am…...

高防服务器部署实战:从IP隐匿到协议混淆

1. IP隐匿方案设计 传统高防服务器常因源站IP暴露遭针对性攻击&#xff0c;群联通过三层架构实现深度隐藏&#xff1a; 流量入口层&#xff1a;域名解析至动态CNAME节点&#xff08;如ai-protect.example.com&#xff09;。智能调度层&#xff1a;AI模型分配清洗节点&#xf…...

激光雷达定位算法在FPGA中的实现——section3 Matlab实现和校验

1、校验section2的计算方法是否正确 以section1里面的图示 举个例子: 1.1 手动计算...

AI+可视化:数据呈现的未来形态

当AI生成的图表开始自动“美化”数据&#xff0c;当动态可视化报告能像人类一样“讲故事”&#xff0c;当你的眼球运动直接决定数据呈现方式——数据可视化的未来形态&#xff0c;正在撕裂传统认知。某车企用AI生成的3D可视化方案&#xff0c;让设计师集体失业&#xff1b;某医…...

[免费]微信小程序医院预约挂号管理系统(uni-app+SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序医院预约挂号管理系统(uni-appSpringBoot后端Vue管理端)&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序医院预约挂号管理系统(uni-appSpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩…...

【网络入侵检测】基于源码分析Suricata的IP分片重组

【作者主页】只道当时是寻常 【专栏介绍】Suricata入侵检测。专注网络、主机安全&#xff0c;欢迎关注与评论。 目录 目录 1.概要 2. 配置信息 2.1 名词介绍 2.2 defrag 配置 3. 代码实现 3.1 配置解析 3.1.1 defrag配置 3.1.2 主机系统策略 3.2 分片重组模块 3.2.1…...

Spring框架请求注解

Spring框架请求注解 1.RequestParam 作用&#xff1a;从请求的 查询参数&#xff08;Query Parameters&#xff09; 或 表单数据&#xff08;Form Data&#xff09; 中提取参数。适用场景&#xff1a; GET 请求的 URL 参数&#xff08;如 /users?nameTom&age20&#xff…...

LVGL简易计算器实战

文章目录 &#x1f4c1; 文件结构建议&#x1f539; eval.h 表达式求值头文件&#x1f539; eval.c 表达式求值实现文件&#xff08;带详细注释&#xff09;&#x1f539; ui.h 界面头文件&#x1f539; ui.c 界面实现文件&#x1f539; main.c 主函数入口✅ 总结 项目效果&…...

【FMMT】基于模糊多模态变压器模型的个性化情感分析

遇到很难的文献看不懂,不应该感到气馁,应该激动,因为外审估计也看不太懂,那么学明白了可以吓唬他 缺陷一:输入依赖性与上下文建模不足​​ ​​缺陷描述​​: 传统自注意力机制缺乏因果关系,难以捕捉序列历史背景多模态数据间的复杂依赖关系未被充分建模CNN/RNN类模型在…...

聊一聊接口测试依赖第三方服务变更时如何处理?

目录 一、依赖隔离与模拟 二、契约测试 三、版本控制与兼容性 四、变更监控与告警 五、容错设计 六、自动化测试维护 七、协作机制与文档自动化 第三方API突然改了参数或者返回结构&#xff0c;导致我们的测试用例失败&#xff0c;这时候该怎么办呢&#xff1f;首先想到…...