1 回答

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超3個(gè)贊
限定標(biāo)識(shí)符是用包名稱(chēng)前綴限定的標(biāo)識(shí)符。包名和標(biāo)識(shí)符都不能為空。
QualifiedIdent = PackageName "." identifier .
限定標(biāo)識(shí)符訪(fǎng)問(wèn)必須導(dǎo)入的不同包中的標(biāo)識(shí)符。標(biāo)識(shí)符必須在該包的包塊中導(dǎo)出和聲明。
math.Sin // denotes the Sin function in package math
進(jìn)口申報(bào)
導(dǎo)入聲明聲明包含聲明的源文件取決于導(dǎo)入包的功能(§程序初始化和執(zhí)行),并允許訪(fǎng)問(wèn)該包的導(dǎo)出標(biāo)識(shí)符。導(dǎo)入命名用于訪(fǎng)問(wèn)的標(biāo)識(shí)符 (PackageName) 和指定要導(dǎo)入的包的 ImportPath。
ImportDecl = "import" ( ImportSpec | "(" { ImportSpec ";" } ")" ) .
ImportSpec = [ "." | PackageName ] ImportPath .
ImportPath = string_lit .
PackageName 用于限定標(biāo)識(shí)符以訪(fǎng)問(wèn)導(dǎo)入源文件中包的導(dǎo)出標(biāo)識(shí)符。它在文件塊中聲明。如果省略 PackageName,則默認(rèn)為導(dǎo)入包的包子句中指定的標(biāo)識(shí)符。如果出現(xiàn)顯式句點(diǎn) (.) 而不是名稱(chēng),則在該包的包塊中聲明的所有包的導(dǎo)出標(biāo)識(shí)符將在導(dǎo)入源文件的文件塊中聲明,并且必須在沒(méi)有限定符的情況下訪(fǎng)問(wèn)。
ImportPath 的解釋依賴(lài)于實(shí)現(xiàn),但它通常是已編譯包的完整文件名的子字符串,并且可能與已安裝包的存儲(chǔ)庫(kù)相關(guān)。
實(shí)現(xiàn)限制:編譯器可以將 ImportPaths 限制為僅使用屬于 Unicode 的 L、M、N、P 和 S 通用類(lèi)別(沒(méi)有空格的圖形字符)的字符的非空字符串,也可以排除字符 !"#$%& '()*,:;<=>?[]^`{|} 和 Unicode 替換字符 U+FFFD。
假設(shè)我們編譯了一個(gè)包含 package 子句 package math 的包,它導(dǎo)出函數(shù) Sin,并將編譯后的包安裝在“l(fā)ib/math”標(biāo)識(shí)的文件中。此表說(shuō)明了在各種類(lèi)型的導(dǎo)入聲明之后如何在導(dǎo)入包的文件中訪(fǎng)問(wèn) Sin。
Import declaration Local name of Sin
import "lib/math" math.Sin
import m "lib/math" m.Sin
import . "lib/math" Sin
導(dǎo)入聲明聲明了導(dǎo)入包和導(dǎo)入包之間的依賴(lài)關(guān)系。一個(gè)包直接或間接地導(dǎo)入自己,或者直接導(dǎo)入一個(gè)包而不引用它的任何導(dǎo)出標(biāo)識(shí)符都是非法的。要僅為其副作用(初始化)導(dǎo)入包,請(qǐng)使用空白標(biāo)識(shí)符作為顯式包名稱(chēng):
import _ "lib/math"
錯(cuò)誤
./main.go:11: imported and not used: "gitlab.com/myapp/api-auth/middlewares"
說(shuō)你沒(méi)有使用 package middlewaresin package main,這是真的。
錯(cuò)誤
./main.go:42: undefined: AcceptHandler
說(shuō)你沒(méi)有AcceptHandler在 package 中定義main,這是真的。
“限定標(biāo)識(shí)符是用包名稱(chēng)前綴限定的標(biāo)識(shí)符。限定標(biāo)識(shí)符訪(fǎng)問(wèn)必須導(dǎo)入的不同包中的標(biāo)識(shí)符。”
例如,在 package 中main,使用限定標(biāo)識(shí)符middlewares.AcceptHandler,這是 import 的一種用法"gitlab.com/myapp/api-auth/middlewares"。
- 1 回答
- 0 關(guān)注
- 385 瀏覽
添加回答
舉報(bào)