1. 程式人生 > >GO語言學習:程式碼拆分(包級私有和公共)

GO語言學習:程式碼拆分(包級私有和公共)

1.把一個檔案拆分為多個(同級目錄)

  為了便於理解,在此處用例子說明:

  在工作區下新建一個資料夾q0,在此資料夾中,

  使用命令vim demo0.go,寫入以下程式碼

    package main

    import "flag"

    var name string

    var name1 string

    func init(){

      flag.StringVar(&name,"name","everyone","The greeting object.")

      flag.StringVar(&name1,"name1","everyone","The greeting object.")

    }

    func main(){

      flag.Parse()

      hello(name)

      showMsg(name1)

    }

  儲存。

  使用命令 vim demo0_lib.go,輸入以下程式碼

    package main

    import "fmt"

    func hello(name string){

      fmt.Printf("Hello,%s!\n",name)

    }

    func showMsg(name string){

      fmt.Printf("Hello,%s!\n",name)

    }

  儲存。

  使用命令 go run demo0.go demo0_lib.go -name="jxd" -name1="xd" ,終端會列印

    Hello,jxd!

    Hello,xd!

  可以看出在demo0.go中,我們沒有使用Printf,只是呼叫了hello函式和showMsg函式,但是這兩個函式又宣告在了其他地方(demo0_lib.go)

  這樣程式碼就會被我們拆分,但是為什麼呢?

  因為它們在同一目錄下,並且被我們宣告屬於同一個main包。

2.同一檔案拆分到不同目錄下

  新建q1資料夾,拷貝demo0.go到此檔案中變名為demo1.go

  修改demo1.go中的程式碼為:

    package main

    import (

        "flag"

        "article3/q1/lib"

        )

    var name string

    var name1 string

    func init(){

      flag.StringVar(&name,"name","everyone","The greeting object.")

      flag.StringVar(&name1,"name1","everyone","The greeting object.")

    }

    func main(){

      flag.Parse()

      lib.Hello(name)

      lib.ShowMsg(name1)

    }

  儲存.

  在q1資料夾中新建lib資料夾,在lib中

  使用命令:vim demo1_lib.go,輸入以下程式碼

    package lib

    import  "fmt"

    func Hello(name string){

      fmt.Printf("Hello,%s!\n",name)

    }

    func ShowMsg(name string){

      fmt.Printf("Hello,%s!\n",name)

    }

  儲存.

  在q1目錄的終端下使用命令 go run demo1.go 在終端列印

    Hello,everyone!

    Hello,everyone!

  

  我們在demo1.go中引入了“article3/q1/lib”,因此可以使用lib包中的程式碼,

  至於demo1_lib.go中的函式首字母大寫,代表此函式可以被包外的程式碼引用。小寫則為包級私有,即使包名被宣告,但是也無法使用函式.

 

  我本人的程式碼目錄介紹:

    usr/local/go   是安裝目錄

    usr/local/gopkg 是工作區

    usr/local/gopkg/src 存放原始碼

    usr/local/gopkg/pkg 存放 go install ***.go的歸檔檔案  (在src下,使用命令 go install article3/q1/lib, 在src同級目錄pkg下生成歸檔檔案)

    

 

    demo1.go 的目錄為/usr/local/src/article/q1 下

    demo1_lib.go的目錄為/usr/local/src/article/q1/lib 下