2023-07-12

紀錄一下 Go 的 struct field tag 的處理

struct field tag 指的是如下 struct 中的 `json:"id"` 這段字串

struct {
	Id uint `json:"id"`
}

最常使用到的情況就是 Standard library 的 xmljson library 了吧。

2023-06-29

如何用 npx 來使用不同版本的 npm

以下是一個簡單的 package.json

{
	"name": "Lorem ipsum dolor sit amet",
	"version": "1.0.0",
	"description": "Ac odio tempor orci dapibus.",
	"main": "index.js",
	"scripts": {
		"start": "webpack",
		"dev": "webpack-dev-server --open"
	},
	"engines": {
		"node": "v8.6.0"
	}
}

如果我的 Node.js 是最新版,那就無法執行該專案了。

2023-01-11

紀錄:Go 如何將 SVG 轉成 image.Image

因為在 Go 中,圖片是靠 image package 來處理的。

而在原生 library 中,並沒有針對 svg 的處理。


我在網路上有找到相關 library ,特此紀錄。


2022-12-05

golang 的 init()

之前就很好奇,像是 github.com/go-sql-driver/mysql 到底是如何做到只需寫以下幾行,就能夠連線 mysql

import (
	"database/sql"

	_ "github.com/go-sql-driver/mysql"
)

// ...

db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306/my-db)")

2022-11-25

Golang slice 研究筆記

以前有研究過 Go silce 的指針,後來看了一些文章,才知道說 Go 本身在底層還有一個 array 來處理 slice。


簡單說,我今天建立一個 slice,實際上同時建立了一個 array

而array 實際上就是個指針


所以執行以下 code 會 print 出同樣的值


arr1 := []int{1, 2, 3}
arr2 := arr1

fmt.Printf("%p\n", &arr1[2])
fmt.Printf("%p\n", &arr2[2])

換言之,arr1[1] = 10 同時會更改到 arr2[1],因為兩者底層的 array 是同一個。