Golang 包管理簡介

Golang 包管理

在一個項目裏,若是想引用本地包,常常會把新手搞的莫名其妙。這裏通俗記錄一下。golang

首先先要知道幾個默認的規則函數

  • 必須定義環境變量GOPATH,GOPATH能夠定義多個目錄
  • 全部項目代碼都在${GOPATH}/src下面
  • 新建一個項目NewProject則其目錄爲${GOPATH}/src/NewProject
    例如NewProject項目目錄以下:
-${GOPATH}/src
    -NewProject
        -main.go
        -mypackage
            -A.go

源文件main.gocode

package main

import (
    "fmt"
    "NewProject/mypackage"
)

func main() {
    fmt.Println("hello")
    fmt.Println(B.GetString())
}

源文件A.gostring

package B

//GetString return string
func GetString() string {
    return "package B"
}

總結一下自定義包引用規則:import

  • 自定義的包B不必定要和其所在文件A.go名字同樣
  • 自定義的包B不必定要和其所在目錄mypackage名字同樣
  • 目錄mypackage下無論有多少文件,這些文件都必須屬於同一個包,也就是至關於一個文件夾定義一個包
    示例裏包B在文件夾${GOPATH}/src/NewProject/mypackage下,意味着改文件夾下的文件都要聲明package B
  • 其餘文件(main.go)內導入(import)包時,import裏寫從{GOPATH}/src開始到最終那個包所在文件夾的相對路徑,
    示例裏包所在文件夾是${GOPATH}/src/NewProject/mypackage,從{GOPATH}/src開始,後面就是NewProject/mypackage,所以引用是要import "NewProject/mypackage"
  • 其餘文件(main.go)內使用包時,直接使用包名加函數名/類型名
    調用函數時就直接B.GetString()
  • 通常地,由於一個文件夾定義一個包,咱們會把包名起地跟文件夾名一致 不然像示例裏,直接調用包B時會顯得很奇怪,不能直接看出來它是從哪裏import來的。但這不是強制的。
相關文章
相關標籤/搜索