Go學習之遇到的第一大坑

最近

最近開始學習go語言

初步設想是通過mysql,建一張表,然後通過Go把這張表的數據以JSON格式提供出去

環境搭建好後,跑程序發現無論如何也無法通過瀏覽器展示想要看的數據

最終在室友的幫助下,發現是數據結構體定義出了問題使用

我定義的結構體:

type server struct {
	ma_type	string
	cu_Type	string
}

可以看到變量採用了下劃線方式連接字符

而Go語言採用的是駝峯法命名規範

駝峯法命名又分大駝峯和小駝峯

區別是第一個字母是大寫還是小寫的問題


問題

問題就出在變量以小寫開頭,和下劃線無關

我的程序裏面http的handler需要使用

《Go併發編程實戰》第15頁講到:

Go語言把變量、常量、函數、結構體和接口統稱爲程序實體,而把它們的名字統稱爲標識符;
標識符首字母大小寫控制着程序實體的訪問權限;
如果標識符的首字母是大寫的,那麼它所對應的程序實體就可以被本代碼包之外的代碼訪問到,也稱可導出的;
否則,對應程序實體只能被本代碼包訪問;


解決

而我的程序是把數據從mysql讀取出來,然後放到該結構體

並且通過json模塊轉換成json格式,問題就出在json轉換

因爲json對應本代碼包來說是其它包

根據上面的原則,我的結構體標識符是小寫開頭,因此不能被外部包(json)

最終改成大寫開頭解決:

type server struct {
	MaType	string
	CuType	string
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章