[Go 07] 使用 zap 框架印出 log

本章內容:

  • 實作使用高性能 zap log 框架
  • 擁有 log level 配置 (常用 debug/warn/info/error)與程式碼位置
  • 可以選擇印出在 console 或是文件(要外掛 lumberjack 去分割)
  • zap 有 suger 函式可以增加易用性,但犧牲效能
繼續閱讀

[Go 04] 信號處理和退出程式

一般在執行go run main.go後就會馬上回到命令列,
這邊實作當接收到ctrl+c或是終止程式才會停止程式

本文說明:

  • go實作接收命令而中止程式.
  • 會用到channel管道來進行阻塞,並接收os/signal訊號
繼續閱讀

[Go 02] GO 新手上路與概念筆記

藍色區塊

開始寫GO

分享自己初學GO時看的教學文章,安裝完GO環境之後,就可以撰寫自己第一支GO的程式了,網路上的系列說明很多很詳細,就不重複撰文了,以下則是自己收藏很有用的網路文章。

個人筆記整理

筆記 Go 的基本类型

bool,string
int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
byte // uint8 的别名
rune // int32 的别名// 表示一个 Unicode 码点
float32 float64
complex64 complex128
https://tour.go-zh.org/basics/11

匿名欄位

1
2
3
4
5
6
7
8
9
10
type User struct {
Name string
}
type Person struct {
User //匿名欄位
ID string
}

ss := Person{User: User{Name: "123"}, ID: "123"}
fmt.Print("ss", ss.Name)

筆記 Go的參數傳遞

傳值的意思是:函式傳遞的總是原來這個東西的一個副本,一副拷貝。

  • pass by value
    嚴格來說,Go只有傳植方式,會複製一個新的變數,且分配新的memory位址。
    pass by pointer (或稱 called by reference,但其實不是)
    指標方式則會複製一個新的指標,但指向的memeory位址是一樣的,但是是兩個不同的指標。
  1. 通常預期參數被修改,應傳指標。
  2. 在go裡pass by value開銷很小
  3. 迷思:Map/chan等其實是指標型別,因此會被修改,是種引用型別(reference types)[不是指call by reference],仍是pass by value

出自以下參考文章:

筆記 理解 Go 语言中的方法和接收者

  • 值接收者,是一个副本,方法内部無法對其真正的接收者做更改;
  • 指针接收者,是接收者的引用,對這個引用的修改可以影響真正的接收者。

理解 Go 语言中的方法和接收者

筆記 go中的資料結構介面-interface

go中的資料結構介面-interface

interface gitbook

筆記 搞定Go Mock 單元測試

搞定Go單元測試(二)——mock框架(gomock)

[Go 01] 配置GO開發環境

什麼是Go

Go(又稱Golang)是Google開發的一種靜態強型別、編譯型、並發型,並具有垃圾回收功能且輕巧的程式語言.

透過三步驟設定完開發環境:

  1. 安裝官方 Go
  2. 配置開發 Go 所需要環境變數
  3. 下載IDE「推薦Visual Studio Code加上插件」 開始寫Go
繼續閱讀