3 回答

TA貢獻(xiàn)1869條經(jīng)驗(yàn) 獲得超4個(gè)贊
錯(cuò)誤是“函數(shù)體之外的非聲明語(yǔ)句”。為什么在 Go 中會(huì)發(fā)生這種情況?
因?yàn)檫@就是 Go 定義的工作方式。從規(guī)格:
每個(gè)源文件都包含一個(gè) package 子句,定義它所屬的包,然后是一組可能為空的導(dǎo)入聲明,這些聲明聲明它希望使用其內(nèi)容的包,然后是一組可能為空的函數(shù)、類型、變量聲明,和常量。
這意味著import 語(yǔ)句的唯一有效位置是package
子句與函數(shù)、類型、變量和常量的聲明之間。
在你的例子中,你有一個(gè)變量聲明,所以 Go 編譯器知道不會(huì)再有 import 語(yǔ)句。然后它看到你的錯(cuò)誤導(dǎo)入語(yǔ)句,看到它是一個(gè)非聲明,并正確地生成你觀察到的錯(cuò)誤。

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超1個(gè)贊
為什么在 go lang 中會(huì)發(fā)生這種情況?
因?yàn)檎Z(yǔ)言規(guī)范不允許。很簡(jiǎn)單,或者?

TA貢獻(xiàn)1809條經(jīng)驗(yàn) 獲得超8個(gè)贊
在 Go 中通常有兩種導(dǎo)入包的方法:
import "fmt"
import "time"?
或者
import (
? ? "fmt"
? ? "time"
)
訣竅是你不能import在你的第二個(gè)例子中混合使用和其他東西。
package main
import (
? ? ? ?"fmt"
)
var test = "testing" //<-- This does not comply with the definition of a Go file
import "time"
func main() {
? ? currtime := time.Now()
? ? fmt.Println(test)?
? ? fmt.Println(currtime)//Output: 16:44:53
}
在這里,您可以找到一份完備的.go 文件剖析文檔。
每個(gè) .go 文件的結(jié)構(gòu)都是相同的。
首先是 package 子句,前面可以有可選的注釋,通常描述包的目的。
然后是零個(gè)或多個(gè)進(jìn)口申報(bào)。
第三部分包含零個(gè)或多個(gè)頂級(jí)聲明
- 3 回答
- 0 關(guān)注
- 148 瀏覽
添加回答
舉報(bào)