golang包引用解析

來源:互聯網
上載者:User

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.gopackage calculatefunc 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.gopackage helloimport "fmt"func Hello() {    fmt.Println("hello")}

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

//main.gopackage mainimport (    "fmt"    "test/calculate"    //這裡import的是目錄名, 不是包名字, 在golang中, 包名可以和目錄名不一致的    "test/hello"        //這裡import的是目錄名, 不是包名字, 在golang中, 包名可以和目錄名不一致的)func main() {    hello.Hello()       //注意注意注意: 這裡應用的是包名, 不是目錄名    fmt.Println(calculate.Mysqrt(5))}

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

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

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.