go语言学习-包管理

news/2024/7/24 5:59:10 标签: golang

1、概念

1.1 什么是包

***Go语言的包(package) ***是一种源码封装的方式,可以被看做是组相关的,并且通用的代码集合。这些包都有自己的独立的功能,然后在编写代码时,如果需要用到这些功能,可以导入包直接使用。

  • 打印一些内容:fmt
  • 处理一些时间相关的: time
  • 处理一些数学相关的:math

1.2 包的优点

  • 可重用性:由于包是独立的功能模块,因此可以重复利用避免重复编写代码。
  • 隔离性:不同包之间的变量、函数名等不会相互干扰,有助于代码的可维护性。
  • 方便管理:包可以按照功能模块进行划分,便于管理和维护

1.3 内置包和第三方包

  • 内置包:由Go语言官方提供,i无需下载即可直接使用,比如: fmt、osnet、math
  • 第三方包:由其他开发者或组织提供的包,需要安装后才能使用,比如:gin、beego、gorm等

go官方的包网址,可以直接搜索相关的包,以及相关的方法

1.4 使用包

通过import导入包

import "math"    //直接导入
import m "math"  //m是别名,后续可以通过m. 去调用方法
import _ "math"  //init初始化操作可能会用到

1.5 包的管理

  • Go Modules是Golang 1.11版本引入的官方包管理工具,Go mod使用go.mod管理项目依赖包的版本、依赖关系、导入和删除信息。使用Gomod可以非常方便的管理项目依赖的包,以及可以自动处理包和包之间的依赖关系、版本等问题。
  • go mod目录:GOPATH -> pkg -> mod -> 下面就是各类依赖

1.6 go.mod使用

1.6.1 开启go mod

go env -w GOPROXY=https://goproxy.cn,direct  #配置代理
go env -w GO111MODULE=on   #开启go mod
on:开启go mod,从go.mod文件中读取依赖关系
off:关闭go mod,完全依赖GOPATH和vendor目录
auto:开启,只有项目目录下有go.mod文件时才会生效

1.6.2 常用命令

go mod init:初始化一个新模块,并在当前目录下创建go.mod文件
go mod tidy:清理未使用的依赖项,并更新go.mod文件
go mod download:下载当前模块及其依赖项的所有依赖
go mod vendor:将依赖项复制到vendor目录中,便于离线部署
go list -m all:列出当前模块及其依赖项的所有模块和版本
go get:获取指定的包或模块,并将其添加到go.mod文件中
go get -u:更新指定包的版本
go build: 编译成二进制包
go mod help: 查看其他命令

2、自定义包

2.1 定义

Go语言自定义包是Go语言中模块化编程的重要组成部分,通过将代码封装在包中,可以实现更好的代码复用、可维护性和可扩展性。同时,自定义包也可以方便地分享给其他开发者使用,可以提高部门或者团队的开发效率。

  • 提高代码复用率
  • 实现代码解
  • 提高代码可读性
  • 提高代码安全性K
  • 提供团队开发效率

2.2 如何自定义包

//新建一个目录packagestudy,初始化项目,切换到新建目录下执行

http://www.niftyadmin.cn/n/5236126.html

相关文章

在线学习平台-需求分析

需求分析 研发集管理员、教务、教师、学生四种权限一体的中后台教务服务管理系统。其中管理员能够开设账号与角色分配,控制系统权限;教务能够进行班级管理、学员管理;教师能够进行课程与教学资源发布、作业发布与批改;学生能够观…

【像素画板】游戏地图编辑器-uniapp项目开发流程详解

嘿,用过像素画板没有哦,相信喜欢绘画的小朋友会对它感兴趣呢,用来绘制像素画非常好看,有没有发现,它是可以用来绘制游戏地图的,是不是很好奇,来一起看看吧。 像素画板,也叫像素画的绘…

Siemens-NXUG二次开发-C/C++/Python环境配置[20231204]

Siemens-NXUG二次开发-C/C/Python运行方式[20231204] 1.NX/UG C/C/Python API官方开发文档2.运行方式2.1内部模式2.2 外部模式2.3 许可证书服务器启动 3.C/C环境配置4.Python环境配置5.第三方环境配置 1.NX/UG C/C/Python API官方开发文档 西门子NX/UG Python api开发文档&…

网络攻击有什么危害,该如何防御

随着互联网的发展,网络安全成为大家关注的焦点。为了确保网络安全,我们需要采取一系列的防护措施。以下是几种常见的网络安全防护措施。 网络安全攻击的主要方式 垃圾邮件和钓鱼攻击:攻击者通过向用户发送大量的垃圾邮件或伪装成合法公司或…

MATLAB算法实战应用案例精讲-【图像处理】人脸识别(补充篇)

目录 人脸识别业务流程 1、通用流程概述 2、ArcFace接入集成及示例 2.1 SDK的获取 2.2 SDK包结构

16种数据分解方法任意挑选,MATLAB代码,实现数据分解自由,一次性全部带走,速看!...

目录 16种常用的数据分解方法 EMD(经验模态分解) EEMD(集合经验模态分解) CEEMD(互补集合经验模态分解) FEEMD(快速EEMD分解) CEEMDAN(完全自适应噪声集合经验模态分解) ICEEMDAN(改进的自适应噪声完备EEMD) LMD(局域均值分解) RLMD(鲁棒性局部均值分解) EWT(经验小波分解) VMD…

微服务的流量管理-服务网格

对于单体应用来说,一般只有流入和流出两种流量。而微服务架构引入了跨进程的网络通信,流量发生在服务之间。由许多服务组成了复杂的网络拓扑结构,每次请求都会产生流量。 这些流量如果没有妥善的管理,整个应用的行为和状态将会不…

vue2框架简易版响应式设计(观察者模式)

对于vue.js中的属性值我们要格外关注: $attrs 获取当前传递的参数 $listeners 获取当前组件的自定义事件 $children 获取当前组件所有子组件 $parent 获取当前组件所有父组件 $options 获取当前vue实例参数信息 $refs 获取ref所有的引用节点 设计原则&#x…