每天5分钟,学习Go包和导入包

Go语言包机制深度解析:从导入路径到模块管理 Go语言中的‘包’是编译期命名空间与依赖管理的核心单元,不同于Java的classpath或Node.js的node_modules,它通过导入路径(import path)实现全局唯一标识、语义化版本控制和零运行时开销的静态链接。其设计融合了构建确定性、跨团队协作安全性和可重现发布能力,支撑Go项目结构规范、CI/CD稳定性和私有模块治理。理解包的本质,是掌握Go Modules、go.mod语义、internal包约束及go get行为的前提,也是解决‘cannot find package’‘unde 阅读详情

包

Go语言的程序会组织成若干组文件,每组文件被称为一个包。同一个目录下的所有的.go文件必须声明为同一个包名。

  • 包名一般使用包所在目录的名字。
  • 包名和目录命名时均全小写。
  • 导包时,使用的是全路径。如果有包名相同,可以在导入时取别名。

net/http/
    cgi/
    cookiejar/
        testdata/
    fcgi/
    httptest/
    httputil/
    pprof/
    testdata/

 

main包

所有用Go语言编译的可执行程序,都必须有一个main包和一个main()函数, 作为程序执行的入口。

 

  • 所有的import 都必须在代码里面使用,否则会编译失败,编译器也会提示。

import本地导入

编译器首先会查找Go的安装目录,然后才会查找GOPATH目录。

  • 标准库中的包会在安装Go的位置找到。
  • 开发者创建的包,在GOPATH环境变量指定的目录找到。

例如:

import (

"fmt"

"strings"

)

import 远程导入

通过Github等分布式共享代码是大势所趋。Go语言工具链支持从Github、Bitbucket等网站获取源代码,并按照URL的路径保存到GOPATH目录里面。

例如:

import "github.com/spf13/viper"

  • 这个过程使用 go get 获取任意URL的包。
  • go get具有递归性,会扫描源码树,获得依赖的包。

 

import 命名导入

当多个包同名时,例如file/convert 和 network/convert。 重名的包可以重新命名。

例如:

import(

"fmt"

myfmt "mylib/fmt"

)

> 欢迎关注扫码,加我VX一起学习。更有面试资料,面经分享哦!!!

import空白标识符

有时引入一个包,但是却不需要在代码里显示引用,可以用空白标识符_.

 

参考

  • Go in action
Go注释不是废话:它是godoc、go vet和模块工具链的元数据基础 Go注释是一种结构化元数据,而非普通说明文字。其核心原理在于位置敏感的AST绑定机制——仅紧邻导出标识符上方的连续注释才被go/doc、go list和gopls等工具解析为文档契约。这种设计赋予注释技术价值:驱动API文档生成、支撑静态分析(如copylocks/lostcancel检查)、影响模块依赖识别与CI校验。典型应用场景包括微服务接口文档自动化、CLI工具包发布验证、OpenAPI同步生成及Example测试驱动开发。本文深入解析Go注释的语法约定、解析时机与工程实践陷阱,覆盖package/t 阅读详情

相关推荐

零基础5分钟上手谷歌云GCP核心云开发技能 - 搭建和维护高可用数据库集群

谷歌云 GCP Cloud SQL 是一项完全托管的关系型数据库服务。它支持多种数据库引擎,支持包括 MySQL、PostgreSQL 和 SQL Server多种数据引擎。Cloud SQL 旨在简化数据库的部署、管理和维护,使开发者能够专注于应用程序开发,而无需担心底层数据库的基础设施管理。

佛州小李哥的博客 6321

GO语言导入自己写的包(同级目录和不同目录)

适合自学go小白理解go语言中的导入自己写的包的方法,图文代码齐上阵,为后来的朋友布道

Working_hard_111的博客 8281

告别手动维护!教你用SAP BAPI批量更新生产订单BOM组件(CO02工单)

本文详细介绍了如何利用SAP BAPI实现生产订单BOM组件的批量更新,解决传统手工操作(如CO02工单)效率低下的问题。通过核心函数解析和批量处理框架设计,帮助用户大幅提升工作效率,降低错误率,适用于物料主数据变更、季节性配方调整等场景。

weixin_30844577的博客 561

9.2 Go语言入门(包和导入)

在 Go 中,每个源文件都必须属于一个包。包的声明使用 package 关键字,通常放在文件的第一行。包名决定了该文件所属的包。

蚊者逆袭的博客 1562

MDK5 Debug调试方法总结

MDK5 Debug调试方法总结

m0_70748084的博客 2万+

6-3 根据派生类写出基类(Java解法)(PTA)

主要是看main函数里调用了什么方法和输出样例,一一对应一下有思路再写就很简单.建议使用IDEA自动生成,可以少写很多代码。

u012137663的博客 1143

golang怎么引入包go语言引入包

需要注意的是,如果将自己的go文件放在GOPATH环境变量指定的目录下(例如“$GOPATH/src”),则可以直接使用文件名作为包名进行引用。其中,“包的路径”可以是相对路径或绝对路径,也可以是包的名称。如果是相对路径,需要以“./”或“../”开头;其中,“路径”是指go文件所在的目录路径,“文件名”是指go文件的文件名(不包含“.go”后缀)。需要注意的是,引入包后未使用其中的内容会导致编译错误,因此应该仅引入需要使用的包。在引入自己的go文件时,应遵循命名规范和包的结构规范,以便于管理和维护代码。

m0_61412114的博客 2823

AUTOSAR/汽车行业

AUTOSAR架构及汽车产业链相关介绍

m0_54254513的博客 1万+

Go 自带的http测试包 httptest 使用介绍

Go httptest 单元测试web接口

hjxisking的专栏 923

【提示学习代码】CoOp代码详读

CoOp是对CLIP的改进工作,主要是对prompt进行学习从而不用来手动设置prompt。自定义CLIP模型:上述两个模块结合而成的CLIP。文本编码器,接收文本的输入,并输出相应的编码表示。将图像和文本进行编码并计算它们之间的相似性。permute后变成了(4,2,3)Prompt学习器,用于学习生成提示。

weixin_51293984的博客 5817

DisplayPort信号通道深度解析:从物理层到协议栈

DisplayPort(DP)是一种面向高速串行通信的数字显示接口标准,其核心在于嵌入式时钟、自适应均衡与链路训练三位一体的物理层架构。不同于HDMI依赖独立时钟的TMDS方案,DP通过差分主链路(Main Link)承载编码数据流,以8b/10b或128b/132b编码实现高带宽与强鲁棒性。该技术价值体现在多速率自适应、误码恢复能力及对PCB布线与阻抗控制的严苛要求,广泛应用于8K显示、工业视觉、GPU直连等高性能场景。本文聚焦DP信号通道的管脚级实现、三层协议解耦(物理层/数据链路层/事务层)及链路训练

weixin_34214500的博客 259

【Go基础】Go自定义导入包以及Go常用命令

前言 在Go语言入门环境搭建中有两个重要的概念GOPATH和GOROOT,其中GOROOT是我们安装的go路径例如D:\Go,将这个路径设置到环境变量就配置好了GO目录的安装路径了。PATH环境变量就是%GOROOT%\bin路径,如D:\Go\bin路径。 而GOPATH则是我们的工作目录,就是写代码的目录,在环境变量中配置之后,我们编译源代码等生成的文件都会放到这个目录下,这个目录下我们一般会新建三个文件夹:src、pkg、bin: src 目录存放的是我们的go源代码,不同工程项目的代码以包名区分。

时光、疏离了记忆づ童话的博客 4640

深度强化学习 | 详解基于价值的强化学习DQN算法(附Pytorch实现)

深度Q网络DQN的核心原理是通过经验回放池和目标网络技术拟合高维状态空间,是Q-Learning算法的深度学习版本,本文分析DQN的基本算法,并给出训练实例和实际案例

FRIGIDWINTER的博客 4988

Go 面试每天一篇(第 44 天)

点击上方蓝色“Golang来啦”关注我哟加个“星标”,天天 15 分钟,一起学 Go你好哇,欢迎来答题,一起来看下1.下面的代码有什么问题?1import( 2...

Seekload 173

Vue3 - Element Plus 树形表格组件 el-table 一键全部展开折叠功能,支持动态数据及懒加载点击父级才去请求的场景,Tree树状表格每行带有children的表格全部收起和折叠!

vue3,element-plus,表格Table组件,el-table,怎样一键展开/收起,一键展开或折叠树形表格,如何通过按钮来实现全部展开,不生效,一键折叠或展开表格,表格children嵌套,带有子集,多级表格,懒加载,动态数据,table表格的children通过后端请求过来的怎么一键展开请求数据呢,表格如何一键展开和折叠,怎么使用,教程,树形数据table全部展开和折叠,一键展开或折叠树形表格,点击展开接口获取数据,toggleRowExpansion,树形表格懒加载与全部折叠,深层多级,复杂,

🏆 前端领域优质创作者 6805

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

go 如何将int设成nil_Go 面试每天一篇(第 44 天)

点击上方蓝色“Golang来啦”关注我哟加个“星标”,天天 15 分钟,一起学 Go你好哇,欢迎来答题,一起来看下昨天题目的解析:1.下面的代码有什么问题?1import(2"fmt"3"log"4"time"5)6funcmain(){7}参考答案及解析:导入的包没有被使用。如果引入一个包,但是未使用其中如何函数、接口、结构体或变量的话,代码将编译...

weixin_31151281的博客 711

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Go 定时任务实现

定时任务是指按照预定的时间间隔或特定时间点自动执行的计划任务或操作。这些任务通常用于自动化重复性的工作,以减轻人工操作的负担,提高效率。在计算机编程和应用程序开发中,定时任务是一种常见的编程模式,用于周期性地执行某些操作、处理数据或触发事件。时间间隔:定时任务通常由时间间隔来触发,这是指在两次任务执行之间的时间段。时间间隔可以是固定的,也可以是根据需要调整的。特定时间点:某些任务需要在特定的日期和时间执行,而不是按时间间隔触发。这可以用于计划将来的事件或在特定的日历日期执行任务。周期性任务。

Lamb的博客 1378

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Operit PR 检查重构:基于 merge candidate 的差异归责与语义化检查器设计

本文聚焦 Operit 仓库 Pull Request 技术预审重构的第二步——**差异归责(Attribution)与检查器(Checks)**。旧版检查体系存在两大致命缺陷:本地化检查会把"新增一行翻译"错误放大为"所有语言的历史欠账",仓库卫生与 Markdown 检查则在缺少 base 参数时退化为全仓扫描,导致 PR 与本地调用的语义漂移。重构后,所有检查显式接收 `base` 与 `c

gitblog_01104的博客 824

go 定时任务库 cron

简介 在Linux中,Cron是计划任务管理系统,通过crontab命令使任务在约定的时间执行已经计划好的工作,例如定时备份系统数据、周期性清理缓存、定时重启服务等。 本文介绍的cron库是一个用于管理定时任务的库,就是用Go实现Linux中crontab命令的相似效果。 快速使用 文本代码使用 Go Modules。 创建目录并初始化: $ mkdir cron && cd c...

牛奔的博客 671

Golang构建系统深度解析:从基础参数到生产级配置实践

在现代软件开发中,构建系统是连接代码编写与部署运行的关键桥梁。Golang的构建机制基于其独特的工具链设计,通过go build等命令实现高效的代码编译与打包。理解构建原理对于提升工程效率至关重要,它能显著优化编译速度、控制依赖版本,并确保产出的二进制文件具备生产环境所需的稳定性和安全性。在微服务架构和云原生场景下,合理的构建配置能够有效支持跨平台部署、CI/CD集成等复杂需求。本文聚焦go build参数调优、依赖管理和跨平台编译等热词,结合具体案例展示如何通过构建标签、条件编译等技术手段,解决高并发场景

aodanchui1057的博客 344

哇塞!提速72倍,在Python里面调用Golang函数

点击上方“菜鸟学Python”,选择“星标”公众号超级无敌干货第一时间推给你!!!我们知道,在涉及到大量 CPU 计算的时候,Python 的运行效率可能不如其他语言。在之前的一篇文章:...

cainiao_python的博客 448

如何快速部署企业级LDAP管理平台:Go-ldap-admin 5分钟上手指南

Go-ldap-admin是一个基于Go+Vue实现的现代化OpenLDAP后台管理平台,为企业IT管理员提供了简单易用、清晰美观的LDAP管理界面。这个开源项目旨在解决传统OpenLDAP配置复杂、管理困难的问题,通过Web界面让企业身份认证和用户权限系统管理变得直观高效。 ## 🚀 快速部署:3种方式任你选择 ### Docker一键部署(推荐) 对于大多数用户来说,Docker部署是

gitblog_00094的博客 166

每天5分钟,细读PHP手册-4

变量 php中的变量是用一个美元符号后面跟着变量名来表示,变量名是区分大小写的。 $this 是一个特殊的变量,它不能被赋值; php的变量赋值默认是传值赋值,可以使用&来实现引用赋值; 只有有名字的变量才可以引用赋值; 未初始化的变量具有其类型的默认值 - 布尔类型的变量默认值是 FALSE,整形和浮点型变量默认值是零,字符串型变量(例如用于 echo 中)默认值是空字符串以及数组变量...

书山路遥 201

5分钟终极指南:免费本地视频字幕提取工具让创作零门槛

还在为视频字幕制作头疼吗?无论是自媒体创作者、教育工作者还是语言学习者,手动转录视频字幕的繁琐过程总是让人望而却步。传统方法不仅耗时耗力,云端OCR服务又存在隐私泄露风险。现在,Video-subtitle-extractor(VSE)这款完全本地运行的视频字幕提取工具,让你在5分钟内完成10分钟视频的字幕提取,准确率高达98%以上,彻底解放你的双手。 ## 为什么你需要这款本地字幕提取神器?

gitblog_00252的博客 210

MAA明日方舟助手:5分钟终极上手指南,免费解放你的游戏时间

你是否厌倦了每天重复刷取关卡、管理基建、处理公开招募等繁琐的日常任务?MAA明日方舟助手就是你的终极解决方案!这款开源自动化工具基于先进的图像识别技术,能够智能完成《明日方舟》中的各种重复性操作,让你从枯燥的"长草期"中解放出来,专注于游戏的核心乐趣。 ## 为什么选择MAA?三大核心价值解析 ### 🎯 时间解放者:每天节省1-2小时 作为一名《明日方舟》玩家,你是否计算过每天花费在重复任

gitblog_00290的博客 976

5分钟掌握微信自动化:wxhelper项目终极指南

你是否曾想过让微信自动化处理重复性工作?是否希望为微信添加一些个性化功能?今天,我将为你介绍一个强大的开源项目——wxhelper,它能让你通过程序化方式控制微信PC端,实现消息自动处理、群组管理和数据分析等功能。 **核心关键词:微信自动化** 这个项目通过动态链接库注入技术,为微信PC端创建了一个完整的HTTP API接口系统,让你可以用任何编程语言与微信进行交互。 ## 🚀 为什么你需

gitblog_00826的博客 1164
上一篇: 每天5分钟,学习Go语言
下一篇: 每天5分钟,init函数与Go工具包
JAVA程序哥
博客等级 码龄11年 102粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JAVA程序哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值