golang?run時(shí)報(bào)undefined錯(cuò)誤的解決
golang run時(shí)報(bào)undefined錯(cuò)誤
問題描述
在golang中同一個(gè)包中有兩個(gè)文件
分別為main.go 和 a.go,main函數(shù)在main.go中
并且在main函數(shù)中引用了a.go中的一個(gè)結(jié)構(gòu)體
運(yùn)行時(shí)報(bào)錯(cuò)
$ go run main.go
# command-line-arguments
.\main.go:170:10: undefined: TestLinkTask
原因
- go run: 會(huì)先進(jìn)行編譯操作,而在此處的編譯它只會(huì)以這個(gè)main.go為準(zhǔn),導(dǎo)致引用其他文件出現(xiàn)找不到的情況
- go build:不一樣,它會(huì)自動(dòng)查找引用文件并打包
解決辦法
- 方法一:
go run main.go a.go
- 方法二:
go run *.go
- 方法三:
go build
goland:運(yùn)行時(shí)undefined: insertRowDemo報(bào)錯(cuò)
這個(gè)錯(cuò)誤很久之前就遇到過了,但是當(dāng)時(shí)沒有解決,這次又讓我碰到了,還是沒有立刻解決掉,其實(shí)這個(gè)錯(cuò)的原因挺簡單的。
比如,有兩個(gè)文件在goland同一個(gè)項(xiàng)目中的同一個(gè)main包中,main.go,Demo1.go,main中調(diào)用Demo1.go中的insertRowDemo()
點(diǎn)擊運(yùn)行時(shí)發(fā)生錯(cuò)誤。
報(bào)錯(cuò)說沒有沒有定義,我勒個(gè)去,編譯器都顯示調(diào)用了,運(yùn)行時(shí)你告訴我沒定義。
好他么詭異。原因是,配置文件的問題,不小心更改了項(xiàng)目的配置文件,在你運(yùn)行時(shí)main方法時(shí),goland會(huì)自動(dòng)給項(xiàng)目加上配置文件,只不過加入的深淺不一樣,(當(dāng)然可以自己進(jìn)行配置)。
深入到直接對main.go進(jìn)行配置,導(dǎo)致,運(yùn)行時(shí)只看到自己文件中的函數(shù),看不到main.go外的文件,當(dāng)然在運(yùn)行時(shí)顯示沒定義了。
解決辦法,把配置文件重新更改到項(xiàng)目深度不要精確到文件。
運(yùn)行項(xiàng)目的時(shí)候,盡量點(diǎn)擊主函數(shù)main()左邊的那個(gè)小綠箭頭進(jìn)行運(yùn)行,或者在main()函數(shù)中右鍵點(diǎn)擊運(yùn)行。
點(diǎn)到函數(shù)的外面,大聰明的goland,就會(huì)自動(dòng)更改你的配置,導(dǎo)致運(yùn)行出錯(cuò)。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
golang踩坑實(shí)戰(zhàn)之channel的正確使用方式
Golang?channel是Go語言中一個(gè)非常重要的特性,除了用來處理并發(fā)編程的任務(wù)中,它還可以用來進(jìn)行消息傳遞和事件通知,這篇文章主要給大家介紹了關(guān)于golang踩坑實(shí)戰(zhàn)之channel的正確使用方式,需要的朋友可以參考下2023-06-06GoLang之標(biāo)準(zhǔn)庫encoding/json包
本文主要介紹了GoLang之標(biāo)準(zhǔn)庫encoding/json包,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08golang 實(shí)現(xiàn)時(shí)間戳和時(shí)間的轉(zhuǎn)化
這篇文章主要介紹了golang 實(shí)現(xiàn)時(shí)間戳和時(shí)間的轉(zhuǎn)化操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-05-05Golang10進(jìn)制轉(zhuǎn)16進(jìn)制的幾種方法代碼示例
這篇文章主要給大家介紹了關(guān)于Golang10進(jìn)制轉(zhuǎn)16進(jìn)制的幾種方法,進(jìn)制轉(zhuǎn)換是Golang的一些基本操作,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07go數(shù)據(jù)結(jié)構(gòu)和算法BitMap原理及實(shí)現(xiàn)示例
這篇文章主要為大家介紹了go數(shù)據(jù)結(jié)構(gòu)和算法BitMap原理及實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07