本文介紹了golang中模塊化編程的方法,以及其中需要注意的地方。
GitHub:https://github.com/SkyDreamcode/Golang.git
參考:https://www.runoob.com/go/go-program-structure.html
模塊化編程,就是在不同的源代碼文件中實現不同功能的函數,以方便我們在項目中的代碼移植和維護。下面介紹golang語言的模塊化編程的簡單實現方法。
在不同的兩個文件中定義實現兩個整形變量的加減兩個函數。具體如下:
文件:mathadd.go
package mathClass
func Submy(x, y int) int{
return x - y;
}
文件:mathsub.go
package mathClass
func Addmy(x, y int) int{
return x + y;
}
將這兩個文件放在目錄myMath中。
然後在工程目錄中建立文件main.go文件:
package main //defaine package name
import "./myMath"//let the compiler know that program uses our own defined package
import "fmt" //let compiler know that the program uses package fmt
func myPrint(){
fmt.Println("start leran go program");
fmt.Println(mathClass.Addmy(2,4));
fmt.Println(mathClass.Submy(5,2));
}
func main(){
myPrint();
fmt.Println("end print");
}
工程目錄:
然後使用sudo go build mina.go編譯工程文件。執行./main。出現如下結果:
注意點:
1.一個go源文件中的函數如果要被文件外的函數調用,那麼這個函數的函數名的首字母必須大寫,否則會報錯。
這也符合:當標識符(包括常量、變量、類型、函數名、結構字段等等)以一個大寫字母開頭,如:Group1,那麼使用這種形式的標識符的對象就可以被外部包的代碼所使用(客戶端程序需要先導入這個包),這被稱爲導出(像面嚮對象語言中的 public);標識符如果以小寫字母開頭,則對包外是不可見的,但是他們在整個包的內部是可見並且可用的(像面嚮對象語言中的 protected )。
2. 文件名與包名沒有直接關係,不一定要將文件名與包名定成同一個。
3. 文件夾名與包名沒有直接關係,並非需要一致。
4. 同一個文件夾下的文件只能有一個包名,否則編譯報錯。