golang自定義教學,Golang 教程

本文目錄一覽:

如何在golang使用自定義的包

例如你自定義的包在 %GOPATH%\custom\mypkg 你的包名也應該聲明為 package mypkg 在其它包中 import “custom/mypkg”

Golang中的自定義json序列化

後端開發人員跟前端對接介面的時候,或多或少都會面臨一些溝通問題,比如說枚舉字元的定義,比如有整形狀態欄位: state

通常給前端的時候,前段要做的是將1,2,3以及對應的中文釋義存儲為key/value的形式,key與value單看都無法知道對方的語義,

比如我只知道狀態值為「1」, 是無法將其與「成功」對應起來的(當然這套狀態的設計者肯定是知道的),後端通常給到前端的restful api

介面定義也是key/value的形式,這乍一看其實也沒啥毛病,只要有key/value也沒問題,後端定義通常會是

但數字的表現形式終歸是不不太明確的,如果對狀態的定義換成以下形式:

基本可以理解為中英文互譯了,理解起來也會更清晰一些不是,如果這麼做的話,後端給到前端的響應欄位狀態的類型就需要修改成字元器格式

後端還是要做一層字元串到整型的轉換,從目的來講,我們只是想返給前端的 state 欄位是字元串而已,也就是在做json序列化的時候將整型與字元串做一層轉換,有更優雅的做法如下所示

只需要做兩件事,自定義類型 MyState ,實現 MarshalJSON 方法

只要類型實現了 MarshalJSON 方法,在json序列化時就會調用此方法,如此一來,我們就輕鬆實現了自定義json序列化,反序列化同樣如此

實現起來也很簡單

需要注意的是, UnmarshalJSON 方法操作過程需要給 receiver 也就是 u 賦值,所以必須是指針類型,同樣的,在實現

MarshalJSON 方法, receiver 的類型需要與結構體定義中的類型保持一致,否則自定義序列化會失敗

參考:

golang中自定義包

golang中默認以文件夾名作為包名,導入的文件的路徑為$GOPATH/src

例如我們在 $GOPATH/src下面建立一個gopackage的一個文件夾,下面建立一個abc.go的文件,文件內容如下

則我們在包外部使用gopackage包中的函數時,導入格式是這樣的:

我們在abc.go文件中需要導出的函數的首字母都是大寫的,這是因為 只有首字母大寫的標識符才可以導出 ,mutiply(int,int)int函數不可以被導出,編譯失敗。

當我們使用多個自定義包時如果發生衝突,怎麼辦呢,我們可以給不同的包提供不同的別名

如果abc.go文件中包名不是文件夾的名字,如

則在外部導入是,golang會自動為該包提供別名

知識分享之Golang——使用gorm時進行執行自定義SQL的幾種方式

知識分享之Golang篇是我在日常使用Golang時學習到的各種各樣的知識的記錄,將其整理出來以文章的形式分享給大家,來進行共同學習。歡迎大家進行持續關注。

知識分享系列目前包含Java、Golang、Linux、Docker等等。

近期一直在使用gorm進行數據的增刪改查操作,對於一些單表或關係表來講使用起來比較方便,但是有時我們可能需要一些特定的長SQL,這時就需要使用到自定義SQL了,本節我對其進行整理出來一些常用的實現方式:

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/280351.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-21 13:03
下一篇 2024-12-21 13:03

相關推薦

  • MQTT使用教程

    MQTT是一種輕量級的消息傳輸協議,適用於物聯網領域中的設備與雲端、設備與設備之間的數據傳輸。本文將介紹使用MQTT實現設備與雲端數據傳輸的方法和注意事項。 一、準備工作 在使用M…

    編程 2025-04-29
  • Python3.6.5下載安裝教程

    Python是一種面向對象、解釋型計算機程序語言。它是一門動態語言,因為它不會對程序員提前聲明變數類型,而是在變數第一次賦值時自動識別該變數的類型。 Python3.6.5是Pyt…

    編程 2025-04-29
  • Deepin系統分區設置教程

    本教程將會詳細介紹Deepin系統如何進行分區設置,分享多種方式讓您了解如何規劃您的硬碟。 一、分區的基本知識 在進行Deepin系統分區設置之前,我們需要了解一些基本分區概念。 …

    編程 2025-04-29
  • 寫代碼新手教程

    本文將從語言選擇、學習方法、編碼規範以及常見問題解答等多個方面,為編程新手提供實用、簡明的教程。 一、語言選擇 作為編程新手,選擇一門編程語言是很關鍵的一步。以下是幾個有代表性的編…

    編程 2025-04-29
  • 使用Golang調用Python

    在現代軟體開發中,多種編程語言的協作是相當普遍的。其中一種使用場景是Golang調用Python,這使得在使用Python庫的同時,可以利用Golang的高性能和強大並發能力。這篇…

    編程 2025-04-29
  • Qt雷達探測教程

    本文主要介紹如何使用Qt開發雷達探測程序,並展示一個簡單的雷達探測示例。 一、環境準備 在開始本教程之前,需要確保你的開發環境已經安裝Qt和Qt Creator。如果沒有安裝,可以…

    編程 2025-04-29
  • 猿編程python免費全套教程400集

    想要學習Python編程嗎?猿編程python免費全套教程400集是一個不錯的選擇!下面我們來詳細了解一下這個教程。 一、課程內容 猿編程python免費全套教程400集包含了從P…

    編程 2025-04-29
  • Python煙花教程

    Python煙花代碼在近年來越來越受到人們的歡迎,因為它可以讓我們在終端里玩煙花,不僅具有視覺美感,還可以通過代碼實現動畫和音效。本教程將詳細介紹Python煙花代碼的實現原理和模…

    編程 2025-04-29
  • Python中自定義函數必須有return語句

    自定義函數是Python中最常見、最基本也是最重要的語句之一。在Python中,自定義函數必須有明確的返回值,即必須要有return語句。本篇文章將從以下幾個方面對此進行詳細闡述。…

    編程 2025-04-29
  • 使用Snare服務收集日誌:完整教程

    本教程將介紹如何使用Snare服務收集Windows伺服器上的日誌,並將其發送到遠程伺服器進行集中管理。 一、安裝和配置Snare 1、下載Snare安裝程序並安裝。 https:…

    編程 2025-04-29

發表回復

登錄後才能評論