Golang筆記-大小寫作用範圍
阿新 • • 發佈:2018-12-20
驗證作用範圍所使用的目錄結構: 其中main.go內容如下:
package main import ( "encoding/json" "fmt" "practice/mulu1" "practice/mulu2" "practice/mulu4" ) //1.即使mulu1下的Plus是首字母大寫,這裡也要匯入包;但如果Plus是首字母小寫,導包plus也語法不可用 //2.導包的路徑是實際的檔案系統目錄,而首字母大小寫可見範圍所針對的包是指go檔案首行package關鍵字後面的跟隨包名:“package notmulu1” //3.兩個go檔案在不同目錄設定相同包名,即mulu1.go和mulu4.go中都為package notmulu1,會報重複宣告錯誤。 //4.兩個go檔案在相同目錄下使用不同的包名,即mulu1下的mulu1.go和mulu11.go.中分別為package notmulu1和notmulu11,語法也不通過。 //5.兩個go檔案在相同目錄下使用相同的包名,則可行,如mulu1下的mulu1.go和mulu11.go.中都為package notmulu1。 type fish struct { a int bbbbb string Cccccc byte //`json:"ccc"` D map[string]int //`json:"ddd"` } func main() { c := notmulu1.Plus(1, 2) // _ = mulu1.plus(2, 2)//不可用 d := mulu2.Minus(3, 1) e := notmulu2.Div(4, 2) fmt.Println(c) fmt.Println(d) fmt.Println(e) //6.Bird結構體在mulu2包裡,如果首字母小寫bird,則這裡報錯,不可見 aa := mulu2.Bird{ Bbbbbb: "2", Cccccc: '3', //7.Bird成員D如果小寫,則會報錯,“結構體Bird裡沒有這個成員”,不可見 // d: map[string]int{"a": 1, "b": 2}, D: map[string]int{"a": 1, "b": 2}, } // check cache!! ledger, ok := aa.D["c"] if ok { fmt.Println(ledger) } // ledger := aa.d["a"] // fmt.Println(ledger) fmt.Println(aa) //8.fish的成員以小寫字母開頭的,序列化之後會丟失這個成員 bb := fish{ a: 1, bbbbb: "2", Cccccc: '3', D: map[string]int{"a": 1, "b": 2}, } b, err := json.Marshal(bb) if err != nil { fmt.Println("err:", err.Error()) } fmt.Println(string(b)) } //總結:golang的命名需要使用駝峰命名法,且不能出現下劃線 //無論是方法名、常量、變數名還是結構體的名稱(包括其成員),如果首字母大寫,則可以被其他的包訪問;如果首字母小寫,則只能在本包中使用。 //結構體成員首字母小寫,則在序列化的時候會丟失該成員 //不同目錄下使用不同包名,相同目錄下使用相同包名,包名指的是go檔案首行的paceage packagename