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

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

undefined main - 測試代碼無法訪問主包

undefined main - 測試代碼無法訪問主包

Go
手掌心 2022-06-13 17:08:24
在下面的代碼中:../folder1/some_test.gopackage main_testimport "testing"func TestF(t *testing.T) {    main.F()}../folder1/some_file.gopackage mainfunc F() {}main.F()給undefined main$ go versiongo version go1.14.3 linux/amd64重命名包名稱main_test以main解決問題。為什么main_test不允許在同一文件夾中測試代碼的包名稱?
查看完整描述

2 回答

?
ABOUTYOU

TA貢獻1812條經驗 獲得超5個贊

您必須導入包才能使用該包。


去.mod:


module example.app

main.go:


package main


func F() {}


func main() {}

main_test.go


package main_test


import (

    "testing"

    "example.app"  // import the main package

)


func TestF(t *testing.T) {

    main.F()

}

上面的代碼假設 main*.go 與 go.mod 的 package 位于同一目錄中example.app。替換example.app為您的模塊的名稱。調整路徑以匹配您的應用程序。例如,如果 main*.go 文件位于cmd/example包含 go.mod 的目錄下的目錄中,則使用導入路徑example.app/cmd/example而不是example.app.


請注意,測試可以通過這種方式導入主包,但非測試代碼不能。


查看完整回答
反對 回復 2022-06-13
?
繁星淼淼

TA貢獻1775條經驗 獲得超11個贊

問題是它main_test與main.


要訪問其中的函數,main您需要main像這樣導入和訪問函數:main.F()


此外, notef以小寫字母開頭,因此不會從 package 中導出main。要在其中訪問它,main_test需要將其導出(可以通過將其更改為以大寫字母開頭來完成:F)。


或者,您可以將測試文件更改為在 package 中main。


使用注釋編輯:導入時main請注意導入路徑按目錄名稱。通常,Go 中的開發人員將他們的包放在與包同名的目錄中(例如,放在main名為 的目錄中main)。在您的情況下,包和目錄名稱不同,因此導入將import ".../folder1"不是import ".../main". 您仍然可以使用main.F()來訪問該功能:


package main_test


import (

   "testing"

   "../folder1" // use the full path to folder1 from the root of your module

)


func TestF(t *testing.T) {

    main.F()

}


查看完整回答
反對 回復 2022-06-13
  • 2 回答
  • 0 關注
  • 189 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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