亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

申報后無法進口

申報后無法進口

Go
慕妹3146593 2023-05-08 15:58:13
我試圖在 Go 中的聲明之后導入一些模塊。例如,我嘗試在聲明變量后導入時間,但這不起作用,有人可以告訴我為什么在 Go 中會發生這種情況嗎?這有效:package mainimport (       "fmt")import "time";var test = "testing"func main() {    currtime := time.Now()    fmt.Println(test)     fmt.Println(currtime)//Output: 16:44:53}但事實并非如此:package mainimport (       "fmt")var test = "testing"import "time"func main() {    currtime := time.Now()    fmt.Println(test)     fmt.Println(currtime)//Output: 16:44:53}錯誤是“函數體之外的非聲明語句”。為什么在 Go 中會發生這種情況?
查看完整描述

3 回答

?
MMTTMM

TA貢獻1869條經驗 獲得超4個贊

錯誤是“函數體之外的非聲明語句”。為什么在 Go 中會發生這種情況?

因為這就是 Go 定義的工作方式。從規格:

每個源文件都包含一個 package 子句,定義它所屬的包,然后是一組可能為空的導入聲明,這些聲明聲明它希望使用其內容的包,然后是一組可能為空的函數、類型、變量聲明,和常量。

這意味著import 語句的唯一有效位置是package子句與函數、類型、變量和常量的聲明之間。

在你的例子中,你有一個變量聲明,所以 Go 編譯器知道不會再有 import 語句。然后它看到你的錯誤導入語句,看到它是一個非聲明,并正確地生成你觀察到的錯誤。


查看完整回答
反對 回復 2023-05-08
?
慕神8447489

TA貢獻1780條經驗 獲得超1個贊

為什么在 go lang 中會發生這種情況?

因為語言規范不允許。很簡單,或者?


查看完整回答
反對 回復 2023-05-08
?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

在 Go 中通常有兩種導入包的方法:


import "fmt"

import "time"?

或者


import (

? ? "fmt"

? ? "time"

)

訣竅是你不能import在你的第二個例子中混合使用和其他東西。


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 文件剖析文檔。

每個 .go 文件的結構都是相同的。

  • 首先是 package 子句,前面可以有可選的注釋,通常描述包的目的。

  • 然后是零個或多個進口申報。

  • 第三部分包含零個或多個頂級聲明


查看完整回答
反對 回復 2023-05-08
  • 3 回答
  • 0 關注
  • 150 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號