了解Go 結構體中的字段可見性
在Go 中使用結構體時,開發人員經常會遇到一個問題,即只能存取具有大寫標識符的欄位在目前包之外。在資料庫中儲存結構或將它們編組為 JSON 時,這可能會特別成問題。
在提供的程式碼片段中,Person 和 Sample 結構包含具有大寫和小寫標識符的欄位。然而,當與 CouchDB 資料庫互動或將 Sample 結構轉換為 JSON 時,僅包含具有大寫標識符的欄位。
此行為植根於 Go 的可見性規則,該規則規定僅以小寫字母開頭的標識符在當前包中可見。由於 JSON 編碼器和 CouchDB 用戶端位於不同的套件中,因此它們無法直接存取結構體中帶有小寫標識符的欄位。
解決方案:使用 JSON 標籤
來克服針對這個限制,Go 提供了一種稱為「JSON 標籤」的機制。 JSON 標籤可讓您指定在 JSON 編組和解組期間應如何對結構欄位進行編碼和解碼。透過將 JSON 標籤新增至具有小寫標識符的字段,您可以使其對 JSON 編碼器可見。
例如:
在此更新的程式碼中,姓名和年齡欄位都以 json 指令標記。這指示 JSON 編碼器在編組期間包含這兩個字段,即使age以小寫字母開頭。
擴展至CouchDB
雖然用於CouchDB 存取的指定庫確實如此沒有明確支援JSON 標籤,可以利用Go 標準庫的JSON 編碼功能來實現所需的結果。以下是使用標記欄位的 PostDocument 函數的修改版本:
透過使用 json.Marshal 函數將結構體轉換為 JSON,然後將其發佈到資料庫,標記欄位將被正確編碼。
結論
理解 Go 的字段可見性規則並利用在跨包邊界處理結構時,JSON 標籤至關重要。透過應用這些原則,您可以確保在資料交換期間所有欄位都可存取並正確序列化。
以上是為什麼 Go 結構中的大寫字段只能在套件外部訪問,以及如何在 JSON 編組和資料庫互動中包含小寫字段?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

whentestinggocodewithinitfunctions,useexplicitseTupfunctionsorseParateTestFileSteSteTepteTementDippedDependendendencyOnInItfunctionsIdeFunctionSideFunctionsEffect.1)useexplicitsetupfunctionStocontrolglobalvaribalization.2)createSepEpontrolglobalvarialization

go'serrorhandlingurturnserrorsasvalues,與Javaandpythonwhichuseexceptions.1)go'smethodensursexplitirorhanderling,propertingrobustcodebutincreasingverbosity.2)

AnefactiveInterfaceingoisminimal,clear and promotesloosecoupling.1)minimizeTheInterfaceForflexibility andeaseofimplementation.2)useInterInterfaceForabStractionToswaPimplementations withoutchangingCallingCode.3)

集中式錯誤處理在Go語言中可以提升代碼的可讀性和可維護性。其實現方式和優勢包括:1.將錯誤處理邏輯從業務邏輯中分離,簡化代碼。 2.通過集中處理錯誤,確保錯誤處理的一致性。 3.使用defer和recover來捕獲和處理panic,增強程序健壯性。

Ingo,替代詞InivestoIniTfunctionsIncludeCustomInitializationfunctionsandsingletons.1)customInitializationfunctions hownerexpliticpliticpliticconconconconconconconconconconconconconconconconconconconconconconconconconconconconconconconconconconconconconconconconconconconconconconconconconconconconcontirization curssetupssetupssetups.2)單次固定無元素限制ininconconcurrent

Gohandlesinterfacesandtypeassertionseffectively,enhancingcodeflexibilityandrobustness.1)Typeassertionsallowruntimetypechecking,asseenwiththeShapeinterfaceandCircletype.2)Typeswitcheshandlemultipletypesefficiently,usefulforvariousshapesimplementingthe

Go語言的錯誤處理通過errors.Is和errors.As函數變得更加靈活和可讀。 1.errors.Is用於檢查錯誤是否與指定錯誤相同,適用於錯誤鏈的處理。 2.errors.As不僅能檢查錯誤類型,還能將錯誤轉換為具體類型,方便提取錯誤信息。使用這些函數可以簡化錯誤處理邏輯,但需注意錯誤鏈的正確傳遞和避免過度依賴以防代碼複雜化。

tomakegoapplicationsRunfasterandMorefly,useProflingTools,leverageConCurrency,andManageMoryfectily.1)usepprofforcpuorforcpuandmemoryproflingtoidentifybottlenecks.2)upitizegorizegoroutizegoroutinesandchannelstoparalletaparelalyizetasksandimproverperformance.3)


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3漢化版
中文版,非常好用

記事本++7.3.1
好用且免費的程式碼編輯器

Dreamweaver Mac版
視覺化網頁開發工具