最近
最近開始學習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
}