@@ -9,172 +9,166 @@ package field
99import "time"
1010
1111// ToOptionalInt returns a pointer to an int
12- func ToOptionalInt (i int ) * int {
13- return & i
12+ func ToOptionalInt (f int ) * int {
13+ return ToOptional ( f )
1414}
1515
1616// OptionalInt returns the value of an optional field or else
1717// returns defaultValue.
1818func OptionalInt (ptr * int , defaultValue int ) int {
19- if ptr != nil {
20- return * ptr
21- }
22- return defaultValue
19+ return Optional (ptr , defaultValue )
2320}
2421
2522// ToOptionalInt32 returns a pointer to an int32.
26- func ToOptionalInt32 (i int32 ) * int32 {
27- return & i
23+ func ToOptionalInt32 (f int32 ) * int32 {
24+ return ToOptional ( f )
2825}
2926
3027// OptionalInt32 returns the value of an optional field or else
3128// returns defaultValue.
3229func OptionalInt32 (ptr * int32 , defaultValue int32 ) int32 {
33- if ptr != nil {
34- return * ptr
35- }
36- return defaultValue
30+ return Optional (ptr , defaultValue )
3731}
3832
3933// ToOptionalUint returns a pointer to an uint
40- func ToOptionalUint (i uint ) * uint {
41- return & i
34+ func ToOptionalUint (f uint ) * uint {
35+ return ToOptional ( f )
4236}
4337
4438// OptionalUint returns the value of an optional field or else returns defaultValue.
4539func OptionalUint (ptr * uint , defaultValue uint ) uint {
46- if ptr != nil {
47- return * ptr
48- }
49- return defaultValue
40+ return Optional (ptr , defaultValue )
5041}
5142
5243// ToOptionalUint32 returns a pointer to an uint32.
53- func ToOptionalUint32 (i uint32 ) * uint32 {
54- return & i
44+ func ToOptionalUint32 (f uint32 ) * uint32 {
45+ return ToOptional ( f )
5546}
5647
5748// OptionalUint32 returns the value of an optional field or else returns defaultValue.
5849func OptionalUint32 (ptr * uint32 , defaultValue uint32 ) uint32 {
59- if ptr != nil {
60- return * ptr
61- }
62- return defaultValue
50+ return Optional (ptr , defaultValue )
6351}
6452
6553// ToOptionalInt64 returns a pointer to an int64.
66- func ToOptionalInt64 (i int64 ) * int64 {
67- return & i
54+ func ToOptionalInt64 (f int64 ) * int64 {
55+ return ToOptional ( f )
6856}
6957
7058// OptionalInt64 returns the value of an optional field or else returns defaultValue.
7159func OptionalInt64 (ptr * int64 , defaultValue int64 ) int64 {
72- if ptr != nil {
73- return * ptr
74- }
75- return defaultValue
60+ return Optional (ptr , defaultValue )
7661}
7762
7863// ToOptionalUint64 returns a pointer to an uint64.
79- func ToOptionalUint64 (i uint64 ) * uint64 {
80- return & i
64+ func ToOptionalUint64 (f uint64 ) * uint64 {
65+ return ToOptional ( f )
8166}
8267
8368// OptionalUint64 returns the value of an optional field or else returns defaultValue.
8469func OptionalUint64 (ptr * uint64 , defaultValue uint64 ) uint64 {
85- if ptr != nil {
86- return * ptr
87- }
88- return defaultValue
70+ return Optional (ptr , defaultValue )
8971}
9072
9173// ToOptionalBool returns a pointer to a bool.
9274func ToOptionalBool (b bool ) * bool {
93- return & b
75+ return ToOptional ( b )
9476}
9577
9678// OptionalBool returns the value of an optional field or else returns defaultValue.
9779func OptionalBool (ptr * bool , defaultValue bool ) bool {
98- if ptr != nil {
99- return * ptr
100- }
101- return defaultValue
80+ return Optional (ptr , defaultValue )
10281}
10382
10483// ToOptionalString returns a pointer to a string.
10584func ToOptionalString (s string ) * string {
106- return & s
85+ return ToOptional ( s )
10786}
10887
10988// OptionalString returns the value of an optional field or else returns defaultValue.
11089func OptionalString (ptr * string , defaultValue string ) string {
111- if ptr != nil {
112- return * ptr
113- }
114- return defaultValue
90+ return Optional (ptr , defaultValue )
11591}
11692
11793// ToOptionalAny returns a pointer to a object.
11894func ToOptionalAny (a any ) * any {
119- return & a
95+ return ToOptional ( a )
12096}
12197
12298// OptionalAny returns the value of an optional field or else returns defaultValue.
12399func OptionalAny (ptr * any , defaultValue any ) any {
124- if ptr != nil {
125- return * ptr
126- }
127- return defaultValue
100+ return Optional (ptr , defaultValue )
128101}
129102
130103// ToOptionalFloat32 returns a pointer to a float32.
131- func ToOptionalFloat32 (i float32 ) * float32 {
132- return & i
104+ func ToOptionalFloat32 (f float32 ) * float32 {
105+ return ToOptional ( f )
133106}
134107
135108// OptionalFloat32 returns the value of an optional field or else returns defaultValue.
136109func OptionalFloat32 (ptr * float32 , defaultValue float32 ) float32 {
137- if ptr != nil {
138- return * ptr
139- }
140- return defaultValue
110+ return Optional (ptr , defaultValue )
141111}
142112
143113// ToOptionalFloat64 returns a pointer to a float64.
144- func ToOptionalFloat64 (i float64 ) * float64 {
145- return & i
114+ func ToOptionalFloat64 (f float64 ) * float64 {
115+ return ToOptional ( f )
146116}
147117
148118// OptionalFloat64 returns the value of an optional field or else returns defaultValue.
149119func OptionalFloat64 (ptr * float64 , defaultValue float64 ) float64 {
150- if ptr != nil {
151- return * ptr
152- }
153- return defaultValue
120+ return Optional (ptr , defaultValue )
154121}
155122
156123// ToOptionalDuration returns a pointer to a Duration.
157- func ToOptionalDuration (i time.Duration ) * time.Duration {
158- return & i
124+ func ToOptionalDuration (f time.Duration ) * time.Duration {
125+ return ToOptional ( f )
159126}
160127
161128// OptionalDuration returns the value of an optional field or else returns defaultValue.
162129func OptionalDuration (ptr * time.Duration , defaultValue time.Duration ) time.Duration {
163- if ptr != nil {
164- return * ptr
165- }
166- return defaultValue
130+ return Optional (ptr , defaultValue )
167131}
168132
169133// ToOptionalTime returns a pointer to a Time.
170- func ToOptionalTime (i time.Time ) * time.Time {
171- return & i
134+ func ToOptionalTime (f time.Time ) * time.Time {
135+ return ToOptional ( f )
172136}
173137
174138// OptionalTime returns the value of an optional field or else returns defaultValue.
175139func OptionalTime (ptr * time.Time , defaultValue time.Time ) time.Time {
140+ return Optional (ptr , defaultValue )
141+ }
142+
143+ // ToOptional returns a pointer to the given field value.
144+ func ToOptional [T any ](v T ) * T {
145+ return & v
146+ }
147+
148+ // Optional returns the value of an optional field or else returns defaultValue.
149+ func Optional [T any ](ptr * T , defaultValue T ) T {
176150 if ptr != nil {
177151 return * ptr
178152 }
179153 return defaultValue
180154}
155+
156+ // Equal returns true if both arguments are nil or both arguments
157+ // dereference to the same value.
158+ func Equal [T comparable ](a , b * T ) bool {
159+ if (a == nil ) != (b == nil ) {
160+ return false
161+ }
162+ if a == nil {
163+ return true
164+ }
165+ return EqualValue (a , * b )
166+ }
167+
168+ // EqualValue returns true if optional field dereferences to the value.
169+ func EqualValue [T comparable ](field * T , value T ) bool {
170+ if field == nil {
171+ return false
172+ }
173+ return * field == value
174+ }
0 commit comments