主頁 > 知識(shí)庫 > golang import自定義包方式

golang import自定義包方式

熱門標(biāo)簽:外呼系統(tǒng)用什么卡 評(píng)價(jià)高的400電話辦理 excel地圖標(biāo)注分布數(shù)據(jù) 阿克蘇地圖標(biāo)注 壽光微信地圖標(biāo)注 外呼系統(tǒng)顯本地手機(jī)號(hào) 電話機(jī)器人軟件免費(fèi) 百度地圖標(biāo)注后傳給手機(jī) 涿州代理外呼系統(tǒng)

1.初探

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

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

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

具體如下:

問題出在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é)果如下:

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

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

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

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

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

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

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

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

import "./pack/p"

這樣無法通過編譯,這就是本文的由來了

首先,工作的目錄結(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)行或編譯,都是可以通過的。

證明了以下幾點(diǎn):

import 語句使用的是文件夾的名稱

上面的文件夾名字為 pack

文件夾名稱和 package 名稱不一定一樣

比如 pack 和 p

調(diào)用自定義包使用 package.函數(shù)名 的方式

p.xxx

自定義包的調(diào)用和文件名沒有關(guān)系。

test.go 和 p 沒有關(guān)系

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • Golang import本地包和導(dǎo)入問題相關(guān)詳解
  • Golang import 導(dǎo)入包語法及一些特殊用法詳解
  • 對(duì)Golang import 導(dǎo)入包語法詳解
  • golang 之import和package的使用
  • golang中import cycle not allowed解決的一種思路
  • 詳解golang避免循環(huán)import問題(“import cycle not allowed”)

標(biāo)簽:欽州 汕頭 吐魯番 梅河口 蘭州 重慶 銅川 雞西

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《golang import自定義包方式》,本文關(guān)鍵詞  golang,import,自定義,包方式,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《golang import自定義包方式》相關(guān)的同類信息!
  • 本頁收集關(guān)于golang import自定義包方式的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章