溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么在golang中使用import自定義包

發(fā)布時(shí)間:2021-04-29 15:46:32 來(lái)源:億速云 閱讀:760 作者:Leah 欄目:開發(fā)技術(shù)

今天就跟大家聊聊有關(guān)怎么在golang中使用import自定義包,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

golang適合做什么

golang可以做服務(wù)器端開發(fā),但golang很適合做日志處理、數(shù)據(jù)打包、虛擬機(jī)處理、數(shù)據(jù)庫(kù)代理等工作。在網(wǎng)絡(luò)編程方面,它還廣泛應(yīng)用于web應(yīng)用、API應(yīng)用等領(lǐng)域。

1.初探

剛開始接觸go時(shí),以為import自定義包與Java工程類似,在非GOPATH的路徑中新建了一個(gè)go項(xiàng)目HelloGo,如下:

怎么在golang中使用import自定義包

接下來(lái),利用beego的bee工具新建了另一個(gè)項(xiàng)目helloapi,如下:

怎么在golang中使用import自定義包

現(xiàn)在,想在helloapi項(xiàng)目中調(diào)用HelloGo項(xiàng)目的函數(shù),通過import引入“HelloGo”,編輯器中一直提示無(wú)法引用,即使把HelloGo添加到左下角的GOPATH[helloapi]中,也沒有效果。

具體如下:

怎么在golang中使用import自定義包

問題出在HelloGo項(xiàng)目的路徑上,因?yàn)槠洳辉谙到y(tǒng)定義的GOPATH路徑下,查看下系統(tǒng)定義的GOPATH:

localhost:helloapi loongshawn$ echo $GOPATH
/Users/loongshawn/Documents/go/workspace
localhost:helloapi loongshawn$

因此,要想引入自定義的包,需要自定義包的路徑為GOPATH路徑中。

2.操作

在工程A中創(chuàng)建方法Say,如下代碼:

package routers
import (
    "fmt"
)

func Say() {
    fmt.Println("引用helloweb項(xiàng)目的Say方法")
}

在工程B中引入工程A,并調(diào)用A工程中的Say函數(shù),同時(shí)啟動(dòng)工程A,Console輸出結(jié)果如下:

怎么在golang中使用import自定義包

怎么在golang中使用import自定義包

輸出結(jié)果顯示,調(diào)用Say函數(shù)正常。不知大家注意到被調(diào)用函數(shù)Say的寫法沒有,函數(shù)名首字母是大寫的,如果把其換成小寫行不行?

在A工程的router.go中新增了print函數(shù),試一下:

func print() {
    fmt.Println("引用helloweb項(xiàng)目的print方法")
}

怎么在golang中使用import自定義包

B工程中重新引用A工程的print方法,但是引用不了。因此,在寫可調(diào)用方法時(shí),方法名首字母需要大寫,這是需要注意的一點(diǎn)。

怎么在golang中使用import自定義包

由于接觸Go不久,許多地方理解不一定到位,如有紕漏之處,請(qǐng)各位同學(xué)幫忙指出來(lái),謝謝!

補(bǔ)充:GoLang 自定義包總結(jié)

大概總結(jié)一下 GoLang 自定義包,并不是需要發(fā)布的包,只是一次在代碼工作路徑下調(diào)用自定義包的一個(gè)嘗試。

今天踩坑就是,以為 import 的時(shí)候要填寫文件夾里面的 package 的名稱,比如之前我是這么寫的:

import "./pack/p"

這樣無(wú)法通過編譯,這就是本文的由來(lái)了

首先,工作的目錄結(jié)構(gòu)是這樣的:

.
├── main.go
└── pack
    └── test.go

1 directory, 2 files

其中,各個(gè)文件代碼為:

// main.go
package main
import (
        "fmt"
       "./pack"
)
func main() {
        s := p.Sayhello()
        fmt.Println(s)
}
// pack/test.go
package p
func Sayhello() string {
        return "Hello!"
}

在主目錄下通過 go run 或者 go build 的方法運(yùn)行或編譯,都是可以通過的。

看完上述內(nèi)容,你們對(duì)怎么在golang中使用import自定義包有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI