golang包引用解析


golang包引用解析

環境變量配置如下:

  • GOROOT----[C:\Go]
  • GOPATH----[F:\workspace\go_home]

vs code配置如下:

F:\workspace\go_home 是總的golang工作空間, 在下面建立兩個必須的目錄 src(必須[F:\workspace\go_home\src]), pkg(必須[F:\workspace\go_home\pkg]), bin(非必須. go intanll時自動創建).

以后每一個單獨的項目都是在 F:\workspace\go_home 單獨創建一個目錄. 比如下面:

  • F:\workspace\go_home\src\test1
  • F:\workspace\go_home\src\test2

test1test2 這是兩個不同的項目. golang 主要是通過這樣的目錄結構, 來管理包的關系. 使用包(package)這種語法元素來組織源碼,所有語法可見性均定義在package這個級別

其中重要的是, 要理解應用包的定義. 應用包就是一個個獨立的包體, 一個包一般是某個功能的源碼文件組成的目錄(可以有多層的子目錄屬於這個包). 其他在最頂層的包目錄, 一般還會有個test文件,用於單元測試.

那么程序怎么運行呢?
在項目頂層創建一個main.go(程序運行入口), 包名注意一定是 package main.

看例子, 以下是整個demo的文件結構:

F:\workspace\go_home\src\test\calculate\calculate.go

//calculate.go
package calculate

func Mysqrt(val float64) float64 {
	z := 0.0
	for i := 0; i < 1000; i++ {
		z -= (z*z - val) / (2 * val)
	}
	return z
}

F:\workspace\go_home\src\test\hello\hello.go

//hello.go
package hello

import "fmt"

func Hello() {
	fmt.Println("hello")
}

F:\workspace\go_home\src\test\main.go

//main.go
package main

import (
	"fmt"
	"test/calculate"	//這里import的是目錄名, 不是包名字, 在golang中, 包名可以和目錄名不一致的
	"test/hello"		//這里import的是目錄名, 不是包名字, 在golang中, 包名可以和目錄名不一致的
)

func main() {
	hello.Hello()		//注意注意注意: 這里應用的是包名, 不是目錄名
	fmt.Println(calculate.Mysqrt(5))
}

//這里import的是目錄名, 不是包名字, 在golang中, 包名可以和目錄名不一致的

//注意注意注意: 這里應用的是包名, 不是目錄名

這兩個主要是要注意的, 總的來說是 import 的是包的路徑, 引用包的東西是使用包名


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM