關(guān)于go語言載入json可能遇到的一個坑
問題簡介
Go語言是一個簡單卻蘊含深意的語言,大家都知道go語言標(biāo)準(zhǔn)庫匯總內(nèi)置了對 json 文件的處理,非常方便,最近在寫一個應(yīng)用的時候,需要從 json 文件中載入 配置,由于是 go 新手,忽略一個細節(jié),導(dǎo)致載入內(nèi)容始終為空,下面話不多說,需要的朋友們一起來看看詳細的介紹:
代碼演示
代碼是最好的說明載體
package config
type config struct{
a string `json:"a"`
b string `json:"a"`
}
func Load(file string)(*config, error){
c = &config{}
file, err := os.Open(file)
if err != nil {
//file open failed todo
}
jsonParser := json.NewDecoder(file)
err = jsonParser.Decode(c)
//c 的值是多少
}
結(jié)論
看到上面的代碼,大家會覺著c 是否賦值成功了呢?
事實上,不成功, json 文件解析成功但是最終賦值失敗
原因其實非常簡單:
go 不同包中的變量 函數(shù) 方法訪問,區(qū)分訪問權(quán)限的就是 變量 函數(shù) 方法的首字母是否大寫 如果是大寫,可以在其他包被訪問
這個問題中,json 包和 config 不是同一個包,訪問失敗,不能 set
a b 必須改寫為大寫才可以賦值
思考
之所以 config 中的 filed 設(shè)置為小寫 是想做訪問控制,如果堅持小寫,如何給 config 的 field 賦值?知道的朋友們可以留言分享哦~
好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
- Go語言中轉(zhuǎn)換JSON數(shù)據(jù)簡單例子
- Go語言對JSON進行編碼和解碼的方法
- 在Go語言程序中使用gojson來解析JSON格式文件
- 使用Go語言解析動態(tài)JSON格式的方法
- go語言讀取json并下載高清妹子圖片
- 詳解Go語言RESTful JSON API創(chuàng)建
- Go語言的JSON處理詳解
- 在Go語言中使用JSON的方法
- Go語言結(jié)構(gòu)體定義和使用方法
- 淺談Go語言中的結(jié)構(gòu)體struct & 接口Interface & 反射
- Go語言指針訪問結(jié)構(gòu)體的方法
- go語言使用第三方包 json化結(jié)構(gòu)體操作示例
相關(guān)文章
Go中基本數(shù)據(jù)類型和字符串表示之間轉(zhuǎn)換詳解
這篇文章主要為大家詳細介紹了Go中基本數(shù)據(jù)類型和字符串表示之間轉(zhuǎn)換的相關(guān)知識,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01
Go語言strconv包實現(xiàn)字符串和數(shù)值類型的相互轉(zhuǎn)換
這篇文章主要介紹了Go語言strconv包實現(xiàn)字符串和數(shù)值類型的相互轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
go語言實戰(zhàn)之實現(xiàn)比特幣地址校驗步驟
這篇文章主要介紹了go語言實戰(zhàn)之實現(xiàn)比特幣地址校驗步驟,利用生產(chǎn)的隨機數(shù)采用橢圓加密算法生成公鑰,具體步驟實例代碼請參考下本文2021-05-05
golang 獲取當(dāng)前執(zhí)行程序路徑的操作
這篇文章主要介紹了golang 獲取當(dāng)前程序執(zhí)行路徑的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12
通過函數(shù)如何將golang?float64?保留2位小數(shù)(方法匯總)
這篇文章主要介紹了通過函數(shù)將golang?float64保留2位小數(shù),本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-08-08

