原创 Go json unmarshal interface{} field bind to struct

寫代碼時碰到這麼一個需求,某個字段根據不同條件對應不同子結構體,通過interface返給前端,同時前端上傳時也要通過這個字段將數據傳給後端。 struct -> json這個比較好辦,給interface賦值不同的子結構體即可。json

原创 golang內置包管理工具go mod簡明教程

go mod go buildin package manager. go mod是go語言內置的包管理工具,集成在go tool中,安裝好go就可以使用。 要求: go version >= 1.11 官方文檔: https://tip.

原创 初試k8s,自頂向下的學習kubernetes

之前就玩過docker,但是一直不知道怎麼把容器運用到生產上。構建一個docker鏡像,把他run起來很簡單;難的是容器的部署(CICD),容器的網絡,數據持久化等。如果我們像之前一樣,打包好鏡像,通過ssh連接到目標服務器run起來,這和

原创 mac使用bootcamp安裝雙系統遇到的問題及解決方案

最近突然想懷舊玩玩毒奶粉(DNF),看了一圈臺式機感覺可能買過來玩不了多久就得在哪接灰,畢竟996,想到了mac雙系統的方案。之前就想試試雙系統,然後下win10 iso鏡像下着下着就忘了。現在鏡像都是現成的直接開搞。 具體步驟參考:htt

原创 使用gvm管理多golang版本,但我想使用統一的GOTPAH

使用gvm管理golang版本遇到一個問題,就是我在.zshrc中設置了GOPATH,但是使用gvm切換後GOPATH又被gvm重新設置了,默認是$GVM_ROOT/pkgsets/go1.12.5/global。而我希望切換不同的GORO

原创 interface作爲struct field,談談golang結構體中的匿名接口

golang中通過組合(composite)實現類似繼承(extends)和重寫(override)的功能,大家可能平時用的比較多的是struct中匿名struct的寫法,有沒有見過struct中匿名接口(anonymous interfa

原创 golang編譯時給包內變量賦值,實現打印版本號及commit

很多命令行程序都可以通過version參數輸出版本信息,commit,操作系統等信息。下面介紹一種方法實現golang編譯的命令行程序打印版本號。 docker打印的版本信息: $ ~ docker version Client: Dock

原创 gitlab將merge request(pr)拉到本地做code review

一般情況我們在gitlab的web頁面上review代碼,但是僅憑肉眼review,勞力傷神,很難看出一些小錯誤。如果我們把代碼拉到IDE中,一些小錯誤編輯器直接提示,編譯錯誤build一下就知道,各種調用跳轉隨心所欲,再也不怕沒把好pr的