From 58e61b84cf892c30cdc982ed32c89961ebcd9781 Mon Sep 17 00:00:00 2001 From: "rick.chan" Date: Wed, 30 Jun 2021 14:41:40 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=20import=20=E8=AF=AD?= =?UTF-8?q?=E6=B3=95.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: rick.chan --- .../Language/Go/Package/Go_包的创建和使用.md | 65 ++++++++++++++++++- 1 file changed, 64 insertions(+), 1 deletion(-) diff --git a/Software/Development/Language/Go/Package/Go_包的创建和使用.md b/Software/Development/Language/Go/Package/Go_包的创建和使用.md index c19ae72..36b52e0 100644 --- a/Software/Development/Language/Go/Package/Go_包的创建和使用.md +++ b/Software/Development/Language/Go/Package/Go_包的创建和使用.md @@ -12,7 +12,7 @@ package pkg ``` -## 2.使用包 +## 2.导入和使用包 ```go /** @@ -33,3 +33,66 @@ func main() { // ... ``` + +### 2.1.相对路径导入 + +导入当前文件同一目录的 model 包: + +```go +import "./model" +``` + +### 2.2.绝对路径 + +加载 $GOPATH/src/shorturl/model 模块: + +```go +import "shorturl/model" +``` + +### 2.3.“\.”操作 + +有时候会看到如下的方式导入包: + +```go +import ( . “fmt” ) +``` + +这个“\.”操作的含义就是这个包导入之后在你调用这个包的函数时,你可以省略前缀的包名,也就是前面你调用的: + +```go +fmt.Println(“hello world”) +``` + +可以省略的写成: + +```go +Println(“hello world”) +``` + +### 2.4.别名 + +别名操作顾名思义可以把包命名成另一个用起来容易记忆的名字: + +```go +import ( f “fmt” ) +``` + +别名操作调用包函数时前缀变成了重命名的前缀,即: + +```go +f.Println(“hello world”) +``` + +### 2.5.“\_”操作 + +这个操作经常是让很多人费解的一个操作符,请看下面这个 import: + +```go +import ( + “database/sql” + _ “github.com/ziutek/mymysql/godrv” +) +``` + +“\_”操作其实只是引入该包。当导入一个包时,它所有的 init() 函数就会被执行,但有些时候并非真的需要使用这些包,仅仅是希望它的 init() 函数被执行而已。这个时候就可以使用“\_”操作引用该包了。即使用“\_”操作引用包是无法通过包名来调用包中的导出函数,而是只是为了简单的调用其 init() 函数。