亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

go?build失敗報(bào)方法undefined的解決過程

 更新時(shí)間:2022年11月29日 16:10:33   作者:非曉為驍  
go build命令用于編譯我們指定的源碼文件或代碼包以及它們的依賴包,下面這篇文章主要給大家介紹了關(guān)于go?build失敗報(bào)方法undefined的解決過程,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

記一次在寫cli腳本的時(shí)候,碰到的一個(gè)問題。

問題

自己是寫服務(wù)端的,有時(shí)候會(huì)寫一些cli腳本去跑測試。習(xí)慣main.go寫主流程,其他子文件寫方法,這樣子代碼不會(huì)都在main.go里面。但這么寫直接GoLand點(diǎn)擊main旁邊的按鈕是可以執(zhí)行,一旦用go build就報(bào)某個(gè)引用的方法,undefined。

范例代碼

//main.go
package main

import "fmt"

func main() {
	fmt.Println("add result : ", Add(1, 2))
	fmt.Println("multi result : ", Multi(1, 2))
}
//operation.go
package main

func Add(a, b int) int {
	return a + b
}

func Multi(a, b int) int {
	return a * b
}

注意這是兩個(gè)文件,不是都在main.go里面,package都是main。這兩個(gè)文件,都在同一個(gè)目錄下面。

操作

直接點(diǎn)擊run,結(jié)果是有的,也沒有報(bào)錯(cuò)

go build就報(bào)錯(cuò),原本調(diào)用的方法undefined

但是上一步可以執(zhí)行呀,也有結(jié)果

解決

原因是go語言中main包和其他package是不同的,它定義了一個(gè)獨(dú)立可執(zhí)行程序,而不是一個(gè)庫。一般的包名是.go文件的目錄名,編譯器會(huì)將同一目錄下的不同.go文件視作同一個(gè)包。但是main包的目錄不是main目錄,所以問題就是在包的引用和定義上,如果想在main包中添加函數(shù)調(diào)用,2個(gè)方法:

  • 寫在main函數(shù)所在的go文件中;
  • 創(chuàng)建另一個(gè)package,main函數(shù)去調(diào)用這個(gè)包?!窘ㄗh】

修改后代碼

// main.go
package main

import (
	"fmt"
	"train/package/operation"
)

func main() {
	fmt.Println("add result : ", operation.Add(1, 2))
	fmt.Println("multi result : ", operation.Multi(1, 2))
}

operation.go放到一個(gè)單獨(dú)的包

// operation.go
package operation

func Add(a, b int) int {
	return a + b
}

func Multi(a, b int) int {
	return a * b
}

此時(shí)再go build就可以解決了。

總結(jié)

到此這篇關(guān)于go build失敗報(bào)方法undefined的文章就介紹到這了,更多相關(guān)go build失敗報(bào)方法undefined內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深入解析Sync.Pool如何提升Go程序性能

    深入解析Sync.Pool如何提升Go程序性能

    在并發(fā)編程中,資源的分配和回收是一個(gè)很重要的問題。Go?語言的?Sync.Pool?是一個(gè)可以幫助我們優(yōu)化這個(gè)問題的工具。本篇文章將會(huì)介紹?Sync.Pool?的用法、原理以及如何在項(xiàng)目中正確使用它,希望對大家有所幫助
    2023-05-05
  • go語法入門匿名函數(shù)定義及使用示例詳解

    go語法入門匿名函數(shù)定義及使用示例詳解

    這篇文章主要為大家介紹了go語法入門匿名函數(shù)定義及使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • Go語言中反射的正確使用

    Go語言中反射的正確使用

    Go本身不支持模板,因此在以往需要使用模板的場景下往往就需要使用反射(reflect). 反射使用多了以后會(huì)容易上癮,有些人甚至?xí)纬梢环N莫名其妙的鄙視鏈。下面這篇文章就給大家介紹了如何正確使用Go語言中的反射以及在使用前的注意,有需要的朋友們下面來一起看看吧。
    2016-12-12
  • Golang基礎(chǔ)學(xué)習(xí)之map的示例詳解

    Golang基礎(chǔ)學(xué)習(xí)之map的示例詳解

    哈希表是常見的數(shù)據(jù)結(jié)構(gòu),有的語言會(huì)將哈希稱作字典或者映射,在Go中,哈希就是常見的數(shù)據(jù)類型map,本文就來聊聊Golang中map的相關(guān)知識(shí)吧
    2023-03-03
  • Go類型安全的HTTP請求示例詳解

    Go類型安全的HTTP請求示例詳解

    這篇文章主要為大家介紹了Go類型安全的HTTP請求示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • etcd通信接口之客戶端API核心方法實(shí)戰(zhàn)

    etcd通信接口之客戶端API核心方法實(shí)戰(zhàn)

    這篇文章主要為大家介紹了etcd通信接口之客戶端API核心方法實(shí)戰(zhàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 一文詳解在Go中如何使用Viper來管理配置

    一文詳解在Go中如何使用Viper來管理配置

    Viper 是一個(gè)功能齊全的 Go 應(yīng)用程序配置庫,支持很多場景。在本文中,我們將深入探討 Viper 的各種用法和使用場景,以幫助讀者更好地了解和使用 Viper 來管理應(yīng)用程序配置,感興趣的同學(xué)可以參考閱讀
    2023-05-05
  • GoLang并發(fā)編程中條件變量sync.Cond的使用

    GoLang并發(fā)編程中條件變量sync.Cond的使用

    Go標(biāo)準(zhǔn)庫提供Cond原語的目的是,為等待/通知場景下的并發(fā)問題提供支持,本文主要介紹了Go并發(fā)編程sync.Cond的具體使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-01-01
  • golang struct 實(shí)現(xiàn) interface的方法

    golang struct 實(shí)現(xiàn) interface的方法

    這篇文章主要介紹了golang struct 實(shí)現(xiàn) interface的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-07-07
  • Go語言實(shí)現(xiàn)二分查找方法示例

    Go語言實(shí)現(xiàn)二分查找方法示例

    這篇文章主要為大家介紹了Go語言實(shí)現(xiàn)二分查找方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12

最新評(píng)論