欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

golang 之import和package的使用

 更新時間:2019年02月22日 14:59:18   作者:big_cat  
這篇文章主要介紹了golang 之import和package的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

golang 使用包 package 來管理定義模塊,可以使用 import 關鍵字來導入使用。

  1. 如果導入的是 go 自帶的包,則會去安裝目錄 $GOROOT/src 按包路徑加載,如 fmt 包
  2. 如果是我們 go get 安裝或自定義的包,則會去 $GOPATH/src 下加載

package 的定義

package 的存放位置是以 $GOPATH/src 作為根目錄,然后靈活的按照目錄去組織,且包名需與最后一級目錄名一致。

例如我們自定義 baz 包,包模塊的存放位置則為 $GOPATH/src/foo/bar/baz,baz 包的源碼都存放在此目錄下,foo/bar/baz 則作為包路徑被 import 載入。

我們需要規(guī)范的將 baz 包中源碼的 package 定義為 baz,就定義好一個可 import 載入的的包了。

hello 模塊

//$GOPATH/src/foo/bar/baz/hello.go
package baz

import (
  "fmt"
)

// 模塊初始化函數(shù) import 包時被調(diào)用
func init() {
  fmt.Println("hello module init function")
}

func Hello() {
  return "hello"
}

world 模塊

//$GOPATH/src/foo/bar/baz/world.go
package baz

import (
  "fmt"
)

// 模塊初始化函數(shù) import 包時被調(diào)用
func init() {
  fmt.Println("world module init function")
}

func World() string {
  return "world"
}
package main

import (
  "fmt"
  "foo/bar/baz" //引入我們自定義的包
)

func main() {
  fmt.Println(baz.Hello(), baz.World())
}

import的使用

普通操作

import (
  "fmt"
  "log"
  "foo/bar/baz"
)

普通導入就是按照加載機制,將要使用的包導入進來,然后使用 packageName.MethodName 的方式調(diào)用包內(nèi)的方法即可。注意如果要包方法在其他包中可以調(diào)用,包方法需要首字母大寫,例如:fmt.Println() fmt.Printf()。

別名操作

package main

import (
  "fmt"
  myBaz "foo/bar/baz"
)

func main() {
  fmt.Println(myBaz.Hello(), myBaz.World())
}

如果兩個包的包名存在沖突,或者包名太長需要簡寫時,我們可以使用別名導入來解決。

點操作

package main

import (
  "fmt"
  . "foo/bar/baz"
)

func main() {
  fmt.Println(Hello(), World()) // 直接使用包內(nèi)的方法即可 不需要顯式使用包名
}

. 導入可以讓包內(nèi)的方法注冊到當前包的上下文中,直接調(diào)用方法名即可,不需要再加包前綴。

下劃線操作

package main

import (
  "fmt"
  _ "foo/bar/baz"
)

func main() {
  fmt.Println(baz.Hello(), baz.World()) // 錯誤 _ 并沒有導入包 只是引入并執(zhí)行包模塊的 init 方法
}

_ 是包引用操作,只會執(zhí)行包下各模塊中的 init 方法,并不會真正的導入包,所以不可以調(diào)用包內(nèi)的其他方法。

相信對很多 phper 來說遵循 PSR4 的 Namespace 會將與路徑緊密相關命名空間也作為類名的一部分,而 golang 則只將模塊目錄文件夾名作為包名,前面的路徑只是用來導入而和包名無關,還是有一點點需要注意的。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 解決golang http.FileServer 遇到的坑

    解決golang http.FileServer 遇到的坑

    這篇文章主要介紹了解決golang http.FileServer 遇到的坑,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • 使用golang獲取linux上文件的訪問/創(chuàng)建/修改時間

    使用golang獲取linux上文件的訪問/創(chuàng)建/修改時間

    這篇文章主要介紹了使用golang獲取linux上文件的訪問/創(chuàng)建/修改時間,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-08-08
  • go語言操作es的實現(xiàn)示例

    go語言操作es的實現(xiàn)示例

    本文主要介紹了go語言操作es的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 一鍵定位Golang線上服務內(nèi)存泄露的秘籍

    一鍵定位Golang線上服務內(nèi)存泄露的秘籍

    內(nèi)存泄露?別讓它拖垮你的Golang線上服務!快速掌握Go語言服務內(nèi)存泄漏排查秘籍,從此問題無處遁形,一文讀懂如何精準定位與有效解決Golang應用中的內(nèi)存問題,立即閱讀,讓性能飛升!
    2024-01-01
  • golang中切片copy復制和等號復制的區(qū)別介紹

    golang中切片copy復制和等號復制的區(qū)別介紹

    這篇文章主要介紹了golang中切片copy復制和等號復制的區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • go語言實現(xiàn)LRU緩存的示例代碼

    go語言實現(xiàn)LRU緩存的示例代碼

    LRU是一種常見的緩存淘汰策略,用于管理緩存中的數(shù)據(jù),本文主要介紹了go語言實現(xiàn)LRU緩存的示例代碼,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • golang定時任務cron項目實操指南

    golang定時任務cron項目實操指南

    Go實現(xiàn)的cron 表達式的基本語法跟linux 中的 crontab基本是類似的,下面這篇文章主要給大家介紹了關于golang定時任務cron項目實操的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • GO語言make()分配用法實例

    GO語言make()分配用法實例

    這篇文章主要介紹了GO語言make()分配用法,實例分析了make()的功能及使用技巧,需要的朋友可以參考下
    2015-02-02
  • 在?Golang?中使用?Cobra?創(chuàng)建?CLI?應用

    在?Golang?中使用?Cobra?創(chuàng)建?CLI?應用

    這篇文章主要介紹了在?Golang?中使用?Cobra?創(chuàng)建?CLI?應用,來看下?Cobra?的使用,這里我們使用的?go1.13.3?版本,使用?Go?Modules?來進行包管理,需要的朋友可以參考下
    2022-01-01
  • Gin使用swagger生成接口文檔的代碼示例

    Gin使用swagger生成接口文檔的代碼示例

    Swagger 是一個規(guī)范和完整的框架,用于生成、描述、調(diào)用和可視化 RESTful Web 服務,它使用 YAML 或 JSON 格式來定義 API 的結(jié)構(gòu),本文給大家介紹了Gin使用swagger生成接口文檔的代碼示例,需要的朋友可以參考下
    2024-06-06

最新評論