[Go语言]从Docker源码学习Go——init()方法和identifier首字母大小写区分
生活随笔
收集整理的這篇文章主要介紹了
[Go语言]从Docker源码学习Go——init()方法和identifier首字母大小写区分
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
init()方法
如果想在一個go文件里,進行一些初始化的工作,可以把代碼放到init()方法中。
init()方法先被執行。
func init() { // initialization of package }注意:它是沒有輸入參數和返回參數的。
?
identifier首字母大小寫區分
當identifier(比如constant,variable,type,function,struct field,...)的命名首字母是大寫的話,那表示這個identifier在包外是可以見的;
類似public的作用。
?
相反,當identifier的首字母小寫時,表示這個idenfitier只在包內可見;
類似private的作用。
?
注意:在包外是否可見與go語言的反射會有一定關系,如果只是包內可見,那在進行反射查找時會有問題產生。
?
我們也可以通過大小寫來進行對初始化的限制
pakcage matrixtype matrix struct {... }function NewMatrix(params) *matrix {m := new(matrix)//m is initializedreturn m }在main中
package mainimport "matrix"wrong := new(matrix.matrix) //will not compile(matrix is private) right := matrix.NewMatrix(...) //the ONLY way to instantiate a matrix我們現在在matrix包外,只能通過NewMatrix這個方法來進行初始化。
轉載于:https://www.cnblogs.com/lemonbar/p/3925961.html
總結
以上是生活随笔為你收集整理的[Go语言]从Docker源码学习Go——init()方法和identifier首字母大小写区分的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: thinking in java --
- 下一篇: volatile关键字及编译器指令乱序总