最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

golang import自定義包方式

 更新時(shí)間:2021年04月29日 10:49:08   作者:loongshawn  
這篇文章主要介紹了golang import自定義包方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

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不久,許多地方理解不一定到位,如有紕漏之處,請各位同學(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ò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • 一文搞懂Go語言中defer關(guān)鍵字的使用

    一文搞懂Go語言中defer關(guān)鍵字的使用

    defer是golang中用的比較多的一個(gè)關(guān)鍵字,也是go面試題里經(jīng)常出現(xiàn)的問題。今天就來整理一下關(guān)于defer的學(xué)習(xí)使用,希望對(duì)需要的朋友有所幫助
    2022-09-09
  • golang判斷字符串是是否包含另一字符串的示例代碼

    golang判斷字符串是是否包含另一字符串的示例代碼

    在Go語言中,可以使用strings.Contains()函數(shù)來判斷一個(gè)字符串是否包含另一個(gè)字符串,該函數(shù)接受兩個(gè)參數(shù):要搜索的字符串和要查找的子字符串,如果子字符串存在于要搜索的字符串中,則返回true,否則返回false,下面通過示例詳細(xì)介紹,感興趣的朋友一起看看吧
    2023-09-09
  • Go語言map實(shí)現(xiàn)順序讀取

    Go語言map實(shí)現(xiàn)順序讀取

    當(dāng)我們遍歷 map 時(shí),那就是輸出的鍵值對(duì)順序是不確定的,本文主要介紹了Go語言map實(shí)現(xiàn)順序讀取, 文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Golang中基礎(chǔ)的命令行模塊urfave/cli的用法說明

    Golang中基礎(chǔ)的命令行模塊urfave/cli的用法說明

    這篇文章主要介紹了Golang中基礎(chǔ)的命令行模塊urfave/cli的用法說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • go使用snmp庫查詢mib數(shù)據(jù)案例代碼

    go使用snmp庫查詢mib數(shù)據(jù)案例代碼

    go語言使用snmp庫中的 k-sone/snmpgo 實(shí)現(xiàn)相關(guān)mib查詢,本文通過實(shí)例代碼給大家介紹了go使用snmp庫查詢mib數(shù)據(jù),感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • Go語言讀取文本文件的三種方式總結(jié)

    Go語言讀取文本文件的三種方式總結(jié)

    工作中時(shí)不時(shí)需要讀取文本,文本文件是最常見的文件類型。本文將利用Go語言從逐行、逐個(gè)單詞和逐個(gè)字符三個(gè)方法讀取文件,感興趣的可以了解一下
    2023-01-01
  • golang語言編碼規(guī)范的實(shí)現(xiàn)

    golang語言編碼規(guī)范的實(shí)現(xiàn)

    這篇文章主要介紹了golang語言編碼規(guī)范的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Go 1.23中Timer無buffer的實(shí)現(xiàn)方式詳解

    Go 1.23中Timer無buffer的實(shí)現(xiàn)方式詳解

    在 Go 1.23 中,Timer 的實(shí)現(xiàn)通常是通過 time 包提供的 time.Timer 類型來實(shí)現(xiàn)的,本文主要介紹了Go 1.23中Timer無buffer的實(shí)現(xiàn)方式,需要的可以了解下
    2025-03-03
  • Go如何優(yōu)雅的使用字節(jié)池示例詳解

    Go如何優(yōu)雅的使用字節(jié)池示例詳解

    在編程開發(fā)中,我們經(jīng)常會(huì)需要頻繁創(chuàng)建和銷毀同類對(duì)象的情形,這樣的操作很可能會(huì)對(duì)性能造成影響,這時(shí)常用的優(yōu)化手段就是使用對(duì)象池(object pool),這篇文章主要給大家介紹了關(guān)于Go如何優(yōu)雅的使用字節(jié)池的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • go Http Post 發(fā)送文件流案例

    go Http Post 發(fā)送文件流案例

    這篇文章主要介紹了go Http Post 發(fā)送文件流案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12

最新評(píng)論

盐山县| 抚顺市| 綦江县| 龙口市| 达州市| 岚皋县| 育儿| 赞皇县| 鞍山市| 徐汇区| 乌拉特中旗| 广昌县| 栖霞市| 奎屯市| 贵德县| 隆安县| 柳河县| 洛南县| 南昌县| 大石桥市| 卓尼县| 隆安县| 司法| 炉霍县| 通州市| 基隆市| 永德县| 宿州市| 海兴县| 启东市| 三明市| 周至县| 公安县| 大关县| 大宁县| 横峰县| 华亭县| 东辽县| 抚远县| 湖北省| 永州市|