在 Go 语言中,包(package)是代码的组织方式。每个 Go 程序都由包构成,程序从 main 包开始运行。

导入包

使用 import 关键字可以导入包。导入的包可以是 Go 标准库中的包,也可以是第三方的包,或者是你自己编写的包。以下是一个导入标准库中的 fmt 包和 math 包的例子:

import (
"fmt"
"math"
)

在上面的代码中,我们导入了 fmt 和 math 两个包,然后就可以在代码中使用这两个包的公开(导出)的函数、类型和变量。

使用包

使用包中的函数、类型或变量,需要在其前面加上包名。例如,我们可以使用 fmt 包的 Println 函数来输出一行文本:

fmt.Println("Hello, world!")

我们也可以使用 math 包的 Pi 变量:

fmt.Println("Value of Pi is:", math.Pi)

导入自定义包

你也可以创建自己的包,并在其他地方导入使用。假设我们有一个包的目录结构如下:

myproject/
|-- go.mod
|-- main.go
|-- mathext/
|-- mathext.go

在 mathext/mathext.go 中,我们有一个自定义的包:

package mathext

// Add adds two integers.
func Add(a, b int) int {
return a + b
}

在 main.go 中,我们可以导入并使用这个自定义的包:

package main

import (
"fmt"
"myproject/mathext"
) func main() {
sum := mathext.Add(1, 2)
fmt.Println("The sum is", sum) // Outputs: The sum is 3
}

注意在导入自定义包时,路径是相对于 Go Modules 的模块路径的。

Go Modules

自 Go 1.11 版本开始,Go 语言引入了官方的包管理工具 Go Modules。用于管理依赖的版本和包的导入路径。

你可以使用 go mod init [module-path] 命令来初始化一个新的模块,创建一个 go.mod 文件。

例如,如果你在 myproject 目录下运行 go mod init github.com/yourusername/myproject,那么 github.com/yourusername/myproject 就是你项目的模块路径,你的自定义包 mathext 的导入路径就是 github.com/yourusername/myproject/mathext

总的来说,Go 的包管理提供了一种简单且强大的方式来组织和复用代码。理解如何导入和使用包,是学习 Go 语言的一个重要步骤。

推荐阅读:

https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA

https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g

【go语言】2.4.1 如何导入和使用包的更多相关文章

  1. R语言︱文本挖掘套餐包之——XML+SnowballC+tm包

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- R语言︱文本挖掘套餐包之--XML+tm+Sn ...

  2. android中正确导入第三方jar包

    android中正确导入第三方jar包 andriod中如果引入jar包的方式不对就会出现一些奇怪的错误. 工作的时候恰好有一个jar包需要调用,结果用了很长时间才解决出现的bug. 刚开始是这样引用 ...

  3. 导入外部jar包的方法

    注:使用的编译平台为eclipse <算法>一书中需要引入外部jar包(algs4.jar),因此特地去学了下导入外部jar包的方法.步骤如下: 1.先将algs4.jar拷到j如下路径: ...

  4. Android Studio 如何导入第三方jar 包

    第一步: 将第三方jar包加入到libs文件夹中 第二步: 分为两种情况 第一种是打开工程所在Project Structure,然后选择Dependencies,点击那个加号选择File Depen ...

  5. Android Studio优化之启用Shift+Ctrl+O导入所有的包

    在使用Eclipse开发Android应用时,开发者往往会使用Shift+Ctrl+O快捷键来快速导入所有的包,和移除已经导入但还未使用的包.但这个快捷键在Android Studio没人是给有开启的 ...

  6. Android Studio的使用(五)--导入第三方Jar包

    本篇博文将介绍一下如何导入第三方Jar包. 1.首先将下载的Jar包直接Copy到libs目录下面,然后右击Jar文件,点击Add As Library后,在出现的弹出框点击确定即可. 2.打开bui ...

  7. jdbc数据连接池dbcp要导入的jar包

    jdbc数据连接池dbcp要导入的jar包 只用导入commons-dbcp-x.y.z.jarcommons-pool-a.b.jar

  8. 系统架构以及需要导入的jar包

    架构: Servlet +JSP +JavaBean +JDBC 需要导入的jar包: MYSQL: 数据库驱动 C3PO连接池: (这个需要配置文件) C3PO DBUtils:特点:轻量级首选,增 ...

  9. maven导入外部jar包的方法

    maven的导入外部jar包的方法(前提还有外部jar包) 1.问题: 在maven添加依赖包时,添加不成功,可以选择通过外部命令导入到仓库里. 2.命令:(在Dos命令行) mvn install: ...

  10. IntelliJ IDEA 导入eclipse项目包及附属包

    使用IntelliJ IDEA 工具导入eclipse项目包,并添加另外一个项目包为库文件 1.导入项目包1,如Demo1,File-->New--->Progect From Exist ...

随机推荐

  1. 笔记:C++学习之旅---引用

    笔记:C++学习之旅---引用 什么是引用? 引用就是别名,引用并非对象,相反的,他只是为一个已经存在的对象所起的另外一个名字. /*引用就是别名*/ #include <iostream> ...

  2. ArcGIS Desktop发布地形高程服务(DEM/DSM)

    在做ArcGIS三维时,地形服务的发布与普通地图服务的发布不一样,需要发布成ImageServer,切片格式选择LERC. 本文示例使用软件: ArcGIS Desktop10.3.1 注:ArcGI ...

  3. MacOS 环境下 VSCode 的 C++ 环境搭建

    编译器安装 编译器可以选择 Clang 或者 GCC,在 MacOS 上 Clang 的安装更为简单一些. Clang(推荐) 打开终端输入命令, clang -v 查看是否已经安装. 如果已经安装, ...

  4. 如何实现一个sync.Once

    sync.Once 是 golang里用来实现单例的同步原语.Once 常常用来初始化单例资源, 或者并发访问只需初始化一次的共享资源,或者在测试的时候初始化一次测试资源. 单例,就是某个资源或者对象 ...

  5. burpsuite_pro_v2022安装以及环境配置,和使用方法

    burpsuite是一个拦截工具,用来网络抓包和解析渗透的一个工具 如何安装burpsuite 首先把需要使用的软件下载下来并且解压到同一个文件夹里面, 打开ddosi.org然后点击 需要是用Jav ...

  6. 聊一聊 dotnet-trace 调查 lock锁竞争

    一:背景 1. 讲故事 最近在分析一个 linux 上的 dump,最后的诱因是大量的lock锁诱发的高频上下文切换,虽然问题告一段落,但我还想知道一点信息,所谓的高频到底有多高频?锁竞争到底是一个怎 ...

  7. 2021-03-20:给定一个二维数组matrix,其中的值不是0就是1,返回全部由1组成的子矩形数量。

    2021-03-20:给定一个二维数组matrix,其中的值不是0就是1,返回全部由1组成的子矩形数量. 福大大 答案2021-03-20: 按行遍历二维数组,构造直方图. 单调栈,大压小.有代码. ...

  8. Django4全栈进阶之路17 项目实战(用户管理):user_add.html用户新增画面设计

    1.模块: {% extends 'base.html' %} {% block content %} <div class="card mt-3"> <div ...

  9. 安装Visio 2013与原本的office冲突的最终解决方案

    一. 下载office visio 2013 这个直接去网上下载一个安装包解压即可 或者直接云盘下载 https://pan.baidu.com/s/1jWGFoHAjegBBvyrL1rq4DQ 提 ...

  10. hw面试常见中间件漏洞

    apache漏洞 未知扩展名解析漏洞 漏洞原理:Apache对文件名后缀的识别是从后往前进行的,当遇到不认识的后缀时,继续往前,直到识别 影响版本:使用module模式与php结合的所有版本,apac ...