Golang笔记-大小写作用范围

【Golang笔记-大小写作用范围】验证作用范围所使用的目录结构:
Golang笔记-大小写作用范围
文章图片

其中main.go内容如下:

package mainimport ( "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 { aint bbbbbstring Cccccc byte//`json:"ccc"` Dmap[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

    推荐阅读