go語言編寫定製的源碼包

在go語言中是通過包來管理源碼的,我們平時會用各種各樣的第三方源碼包來構建自己的程序,那麼如何編寫一個定製的源碼包呢?這要求我們知道一些關於源碼包結構的基本理論。首先,回顧我們平時使用源碼包的過程,比如"fmt"包,

  • 通過import "fmt"導入源碼包

  • 通過fmt.Println()調用源碼包裏的方法

在這裏,"fmt"是一個相對路徑,它的絕對路徑是:$GOPATH/src/fmt,在這個路徑下至少有一個叫xxx.go的文件,在這個文件裏面有一條package fmt語句,以及一個Println()方法。從這裏可以看出,源碼包的路徑名稱和包所在的文件名稱沒有聯繫,它們是一對多的關係,而且在一個源碼包的路徑下還可以有下一級目錄。事實上,源碼包的路徑、包所在的文件名、包名三者之間沒有任何聯繫,它們的名稱可以不同,也就是我們可以創建下面這樣的一個包:

[zhoumin@computer2 src]$ tree $GOPATH/src/a
/home/zhoumin/go/dev/src/a
└── b.go

0 directories, 1 file

在這裏,我們創建的這個包的路徑是: $GOPATH/src/a, 該路徑下有一個叫做b.go的文件。

[zhoumin@computer2 src]$ cat $GOPATH/src/a/b.go
package c

import "fmt"

func D() {
        fmt.Println("I'm in method D() in package c at file $GOPATH/src/a/b.go")
}

b.go中有一條“package c”語句,表明這個文件所在的包名叫做“c”,該文件中還有一個叫做D()的方法,該方法的首字母大寫,表明該方法是一個導出方法,可被其他包使用。

那麼,我們可以按照以下方式來使用這個包:

package main

import "a"  //指明包的路徑名

func main() {
    //使用 “包名.方法名()” 的方式來使用包
    //不管是在導入包,還是使用包中的方法,用戶都不必知道 b.go文件的存在
    c.D()
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章