golang import 导入的四种方式

golang,import · 浏览次数 : 0

小编点评

**标准导入** ```go import "package_name" ``` **别名导入** ```go import ( alias "package_name" ) ``` **匿名导入** ```go import ( _ "package_name" ) ``` **点导入** ```go import ( . "package_name" ) ```

正文

 

1 标准导入:

import "package_name"

 

2 导入别名:

import (
    alias "package_name"
)

 

3 匿名导入:

import (
    _ "package_name"
)

 

4 点导入:

import (
    . "package_name"
)

 

下面做详细解释:


Go语言最常见的导入方式是标准导入,格式如下:

import "package_name"

在这个形式中,你需要在调用包内的任何成员时使用包名作为前缀,例如:

package_name.FunctionName() 或 package_name.Type

 

此外,Go还支持导入别名,这可以用于解决包名冲突或者让代码更易读。例如:

import (
    p "github.com/henrylee2cn/pholcus/app/spider"
    m "math"
)

在这个例子中,p 是 github.com/henrylee2cn/pholcus/app/spider 包的别名,m 是 math 包的别名。在你的代码中,你可以使用 p.FunctionName() 和 m.Sqrt() 而不是完整的包名。


匿名导入:_ "package_name"
当你只需要导入包来执行它的初始化函数(如果有的话),但并不打算在代码中直接引用该包的任何符号时,可以使用匿名导入。
例如,某些包可能需要在程序启动时做一些设置或者注册,但你不需要在代码中显式调用它们的任何函数。
这种导入方式不会在你的代码中为该包创建任何别名,所以无法直接访问包内的任何成员。


点导入:. "package_name"
点导入允许你省略在调用包内函数时的包名前缀。
例如,如果你导入了一个包 math 并使用点导入,那么你可以直接写 Sqrt(x) 而不是 math.Sqrt(x)。
这种方式使得代码更简洁,但可能导致命名冲突,如果两个不同的包提供了同名的函数或变量。


匿名导入 以及 点导入,这两种导入方式并不常见,通常我们使用标准的 import "package_name" 形式,这样可以明确地引用包,并且避免不必要的初始化或潜在的冲突。

 

Link:https://www.cnblogs.com/farwish/p/18223277

与golang import 导入的四种方式相似的内容:

golang import 导入的四种方式

1 标准导入: import "package_name" 2 导入别名: import ( alias "package_name" ) 3 匿名导入: import ( _ "package_name" ) 4 点导入: import ( . "package_name" ) 下面做详细解释:

Golang 切片作为函数参数传递的陷阱与解答

作者:林冠宏 / 指尖下的幽灵。转载者,请: 务必标明出处。 GitHub : https://github.com/af913337456/ 出版的书籍: 《1.0-区块链DApp开发实战》 《2.0-区块链DApp开发:基于公链》 例子 切片作为函数参数传递的是值 用来误导切片作为函数参数传递的

golang 所有关键字的列表及释义归类

golang 所有关键字的列表及释义归类,截至1.18版本。 [控制结构] if : 条件语句,基于布尔表达式的值决定是否执行特定的代码块。 else、 else if : 用在 if 语句之后,当条件表达式为假时执行的代码块。 switch : 多路选择语句,根据不同的情况执行不同的代码块。 ca

golang 泛型的格式写法

Go语言中的泛型(Generics)是在 Go 1.18 版本中引入的一个重要特性,它允许你编写可重用的代码,而不需要为每种数据类型重复编写相同的逻辑。 泛型通过参数化类型(type parameters)来实现,使得函数、方法、接口和结构体可以与多种类型一起工作。 下面详细介绍Go语言中泛型的基本

Golang channel底层是如何实现的?(深度好文)

Go语言为了方便使用者,提供了简单、安全的协程数据同步和通信机制,channel。那我们知道channel底层是如何实现的吗?今天k哥就来聊聊channel的底层实现原理。同时,为了验证我们是否掌握了channel的实现原理,本文也收集了channel的高频面试题,理解了原理,面试题自然不在话下。

Golang 依赖注入设计哲学|12.6K 的依赖注入库 wire

本文从“术”层面,讲述“依赖注入”的实现,带你体会其对于整洁架构 & DDD 等设计思想的落地,起到的支撑作用。

[golang]在Gin框架中使用JWT鉴权

什么是JWT JWT,全称 JSON Web Token,是一种开放标准(RFC 7519),用于安全地在双方之间传递信息。尤其适用于身份验证和授权场景。JWT 的设计允许信息在各方之间安全地、 compactly(紧凑地)传输,因为其自身包含了所有需要的认证信息,从而减少了需要查询数据库或会话存储

golang如何使用指针灵活操作内存?unsafe包原理解析

本文将深入探讨Golang中unsafe包的功能和原理。同时,我们学习某种东西,一方面是为了实践运用,另一方面则是出于功利性面试的目的。所以,本文还会为大家介绍unsafe 包的典型应用以及高频面试题。

golang reflect 反射机制的使用场景

Go语言中的 reflect 包提供了运行时反射机制,允许程序在运行时检查和操作任意对象的数据类型和值。 以下是 reflect 包的一些典型使用场景: 1. 动态类型判断与转换:当需要处理多种类型的变量且具体类型直到运行时才能确定时,可以使用反射来检查变量的实际类型,并在可能的情况下进行类型转换。

golang sync.Map 与使用普通的 map 的区别

使用sync.Map与普通的Go map主要有以下几点区别: 1. 并发安全性 普通map: 在没有外部同步的情况下,不是并发安全的。在多goroutine访问时,如果没有适当的锁或其他同步机制保护,可能会导致数据竞争和未定义行为。 sync.Map: 是并发安全的。它内部实现了必要的同步机制,允许