參考go系列教材反射章節,源**沒有實現輸出字段,我根據對反射的理解實現了對字段進行輸出。beego的orm就是基於反射實現的。
/*
# @time : 2019-01-05 16:57
# @author : smallforest
# @software : goland
*/package main
import (
"fmt"
"reflect"
)type order3 struct
type employee3 struct
func createquery3(q inte***ce{}) else
}query = fmt.sprintf("%s) values(",query)
v := reflect.valueof(q)
for i := 0; i < v.numfield(); i++ else
case reflect.string:
if i == 0 else
default:
fmt.println("unsupported type")
return}}
query = fmt.sprintf("%s)", query)
fmt.println(query)
return
}fmt.println("unsupported type")
}func main()
createquery3(o)
e3 := employee3
createquery3(e3)
i := 90
createquery3(i)
}
go 實現乙個簡單的UUID生成器
檢視源 實現方法 uuid 通過三部分組成 curtime 22 generaterid 12 sequenceid 具體原理如下 首先每乙個uuid生成器有乙個id 在生成uuid的時候 先取當前時間距離1970的秒數作為高位,generaterid作為中間 如果本次生成的時間和上一次的時間相同,...
基於snowflake的Id序列號生成器
背景 在分布式微服務系統中,通常需要全域性唯一的序列號,需求實現簡單高效,通常的做法可以用資料庫的自增id,uuid生成等。但資料庫自增id侷限在於依賴於資料庫表,在效率上有所折扣,尤其是高併發量的場景。而uuid一般比較長,關鍵是無序的。twitter的snowflake解決了這種需求,最初twi...
python上下文管理之基於生成器的實現
我們還可以用裝飾器 decorators 和生成器 generators 來實現上下文管理器。python有個contextlib模組專門用於這個目的。我們可以使用乙個生成器函式來實現乙個上下文管理器,而不是使用乙個類。讓我們看看乙個基本的,沒用的例子 from contextlib import ...