43 lines
839 B
Go
43 lines
839 B
Go
package cassandra
|
|
|
|
import (
|
|
"reflect"
|
|
"unicode"
|
|
)
|
|
|
|
// 判斷字串是否存在於 slice 中
|
|
func contains(list []string, target string) bool {
|
|
for _, item := range list {
|
|
if item == target {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
// toSnakeCase 將 CamelCase 字串轉換為 snake_case
|
|
func toSnakeCase(s string) string {
|
|
var result []rune
|
|
for i, r := range s {
|
|
if unicode.IsUpper(r) {
|
|
if i > 0 {
|
|
result = append(result, '_')
|
|
}
|
|
result = append(result, unicode.ToLower(r))
|
|
} else {
|
|
result = append(result, r)
|
|
}
|
|
}
|
|
return string(result)
|
|
}
|
|
|
|
// 判斷欄位是否為零值或 nil
|
|
func isZero(v reflect.Value) bool {
|
|
switch v.Kind() {
|
|
case reflect.Ptr, reflect.Interface, reflect.Map, reflect.Slice:
|
|
return v.IsNil()
|
|
default:
|
|
return reflect.DeepEqual(v.Interface(), reflect.Zero(v.Type()).Interface())
|
|
}
|
|
}
|