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来的。但这不是强制的。
相关文章
相关标签/搜索