Newer
Older
package reflection
import (
"reflect"
"time"
"gitlab.bob.co.za/bob-public-utils/bobgroup-go-utils/logs"
)
func SetPointerTime(field reflect.Value, value *time.Time) {
if !isFieldValid(field, false) {
return // Field doesn't exist
}
if field.Kind() != reflect.Ptr {
return
}
field.Set(reflect.ValueOf(value))
}
func SetInt64(field reflect.Value, value int64) {
if !isFieldValid(field, false) {
return // Field doesn't exist
}
if field.Kind() != reflect.Int64 {
return
}
if field.OverflowInt(value) {
return
}
field.SetInt(value)
}
func SetPointerInt64(field reflect.Value, value *int64) {
if !isFieldValid(field, false) {
return // Field doesn't exist
}
if field.Kind() != reflect.Ptr {
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
return
}
field.Set(reflect.ValueOf(value))
}
func SetString(field reflect.Value, value string) {
if !isFieldValid(field, false) {
return // Field doesn't exist
}
if field.Kind() != reflect.String {
return
}
field.SetString(value)
}
func GetStringValue(field reflect.Value) string {
if !isFieldValid(field, true) {
return ""
}
if field.Kind() == reflect.String {
return field.String()
}
if field.Kind() == reflect.Ptr && !field.IsNil() {
return field.Elem().String()
}
return ""
}
func GetInt64Value(field reflect.Value) int64 {
if !isFieldValid(field, true) {
return 0
}
if field.Kind() == reflect.Int64 {
return field.Int()
}
return 0
}
func isFieldValid(field reflect.Value, readonly bool) bool {
if readonly {
return field.IsValid()
}
return field.IsValid() && field.CanSet()
}