Go 語言 導(dǎo)入聲明

2023-03-14 16:59 更新

原文鏈接:https://gopl-zh.github.io/ch10/ch10-04.html


10.4. 導(dǎo)入聲明

可以在一個(gè)Go語言源文件包聲明語句之后,其它非導(dǎo)入聲明語句之前,包含零到多個(gè)導(dǎo)入包聲明語句。每個(gè)導(dǎo)入聲明可以單獨(dú)指定一個(gè)導(dǎo)入路徑,也可以通過圓括號(hào)同時(shí)導(dǎo)入多個(gè)導(dǎo)入路徑。下面兩個(gè)導(dǎo)入形式是等價(jià)的,但是第二種形式更為常見。

import "fmt"
import "os"

import (
    "fmt"
    "os"
)

導(dǎo)入的包之間可以通過添加空行來分組;通常將來自不同組織的包獨(dú)自分組。包的導(dǎo)入順序無關(guān)緊要,但是在每個(gè)分組中一般會(huì)根據(jù)字符串順序排列。(gofmt和goimports工具都可以將不同分組導(dǎo)入的包獨(dú)立排序。)

import (
    "fmt"
    "html/template"
    "os"

    "golang.org/x/net/html"
    "golang.org/x/net/ipv4"
)

如果我們想同時(shí)導(dǎo)入兩個(gè)有著名字相同的包,例如math/rand包和crypto/rand包,那么導(dǎo)入聲明必須至少為一個(gè)同名包指定一個(gè)新的包名以避免沖突。這叫做導(dǎo)入包的重命名。

import (
    "crypto/rand"
    mrand "math/rand" // alternative name mrand avoids conflict
)

導(dǎo)入包的重命名只影響當(dāng)前的源文件。其它的源文件如果導(dǎo)入了相同的包,可以用導(dǎo)入包原本默認(rèn)的名字或重命名為另一個(gè)完全不同的名字。

導(dǎo)入包重命名是一個(gè)有用的特性,它不僅僅只是為了解決名字沖突。如果導(dǎo)入的一個(gè)包名很笨重,特別是在一些自動(dòng)生成的代碼中,這時(shí)候用一個(gè)簡(jiǎn)短名稱會(huì)更方便。選擇用簡(jiǎn)短名稱重命名導(dǎo)入包時(shí)候最好統(tǒng)一,以避免包名混亂。選擇另一個(gè)包名稱還可以幫助避免和本地普通變量名產(chǎn)生沖突。例如,如果文件中已經(jīng)有了一個(gè)名為path的變量,那么我們可以將“path”標(biāo)準(zhǔn)包重命名為pathpkg。

每個(gè)導(dǎo)入聲明語句都明確指定了當(dāng)前包和被導(dǎo)入包之間的依賴關(guān)系。如果遇到包循環(huán)導(dǎo)入的情況,Go語言的構(gòu)建工具將報(bào)告錯(cuò)誤。



以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)