Skip to content

Commit d2bd5b4

Browse files
committed
Add ToXXXOrNil functions.
1 parent 1e3f92f commit d2bd5b4

1 file changed

Lines changed: 189 additions & 0 deletions

File tree

pointer_or_nil.go

Lines changed: 189 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,189 @@
1+
package pointer
2+
3+
import (
4+
"time"
5+
)
6+
7+
/*
8+
Order as in spec:
9+
bool byte complex64 complex128 error float32 float64
10+
int int8 int16 int32 int64 rune string
11+
uint uint8 uint16 uint32 uint64 uintptr
12+
time.Duration time.Time
13+
*/
14+
15+
// ToBoolOrNil returns a pointer to the passed bool value, or nil, if passed value is a zero value.
16+
func ToBoolOrNil(b bool) *bool {
17+
if b == false {
18+
return nil
19+
}
20+
return &b
21+
}
22+
23+
// ToByteOrNil returns a pointer to the passed byte value, or nil, if passed value is a zero value.
24+
func ToByteOrNil(b byte) *byte {
25+
if b == 0 {
26+
return nil
27+
}
28+
return &b
29+
}
30+
31+
// ToComplex64OrNil returns a pointer to the passed complex64 value, or nil, if passed value is a zero value.
32+
func ToComplex64OrNil(c complex64) *complex64 {
33+
if c == 0 {
34+
return nil
35+
}
36+
return &c
37+
}
38+
39+
// ToComplex128OrNil returns a pointer to the passed complex128 value, or nil, if passed value is a zero value.
40+
func ToComplex128OrNil(c complex128) *complex128 {
41+
if c == 0 {
42+
return nil
43+
}
44+
return &c
45+
}
46+
47+
// ToErrorOrNil returns a pointer to the passed error value, or nil, if passed value is a zero value.
48+
func ToErrorOrNil(e error) *error {
49+
if e == nil {
50+
return nil
51+
}
52+
return &e
53+
}
54+
55+
// ToFloat32OrNil returns a pointer to the passed float32 value, or nil, if passed value is a zero value.
56+
func ToFloat32OrNil(f float32) *float32 {
57+
if f == 0 {
58+
return nil
59+
}
60+
return &f
61+
}
62+
63+
// ToFloat64OrNil returns a pointer to the passed float64 value, or nil, if passed value is a zero value.
64+
func ToFloat64OrNil(f float64) *float64 {
65+
if f == 0 {
66+
return nil
67+
}
68+
return &f
69+
}
70+
71+
// ToIntOrNil returns a pointer to the passed int value, or nil, if passed value is a zero value.
72+
func ToIntOrNil(i int) *int {
73+
if i == 0 {
74+
return nil
75+
}
76+
return &i
77+
}
78+
79+
// ToInt8OrNil returns a pointer to the passed int8 value, or nil, if passed value is a zero value.
80+
func ToInt8OrNil(i int8) *int8 {
81+
if i == 0 {
82+
return nil
83+
}
84+
return &i
85+
}
86+
87+
// ToInt16OrNil returns a pointer to the passed int16 value, or nil, if passed value is a zero value.
88+
func ToInt16OrNil(i int16) *int16 {
89+
if i == 0 {
90+
return nil
91+
}
92+
return &i
93+
}
94+
95+
// ToInt32OrNil returns a pointer to the passed int32 value, or nil, if passed value is a zero value.
96+
func ToInt32OrNil(i int32) *int32 {
97+
if i == 0 {
98+
return nil
99+
}
100+
return &i
101+
}
102+
103+
// ToInt64OrNil returns a pointer to the passed int64 value, or nil, if passed value is a zero value.
104+
func ToInt64OrNil(i int64) *int64 {
105+
if i == 0 {
106+
return nil
107+
}
108+
return &i
109+
}
110+
111+
// ToRuneOrNil returns a pointer to the passed rune value, or nil, if passed value is a zero value.
112+
func ToRuneOrNil(r rune) *rune {
113+
if r == 0 {
114+
return nil
115+
}
116+
return &r
117+
}
118+
119+
// ToStringOrNil returns a pointer to the passed string value, or nil, if passed value is a zero value.
120+
func ToStringOrNil(s string) *string {
121+
if s == "" {
122+
return nil
123+
}
124+
return &s
125+
}
126+
127+
// ToUintOrNil returns a pointer to the passed uint value, or nil, if passed value is a zero value.
128+
func ToUintOrNil(u uint) *uint {
129+
if u == 0 {
130+
return nil
131+
}
132+
return &u
133+
}
134+
135+
// ToUint8OrNil returns a pointer to the passed uint8 value, or nil, if passed value is a zero value.
136+
func ToUint8OrNil(u uint8) *uint8 {
137+
if u == 0 {
138+
return nil
139+
}
140+
return &u
141+
}
142+
143+
// ToUint16OrNil returns a pointer to the passed uint16 value, or nil, if passed value is a zero value.
144+
func ToUint16OrNil(u uint16) *uint16 {
145+
if u == 0 {
146+
return nil
147+
}
148+
return &u
149+
}
150+
151+
// ToUint32OrNil returns a pointer to the passed uint32 value, or nil, if passed value is a zero value.
152+
func ToUint32OrNil(u uint32) *uint32 {
153+
if u == 0 {
154+
return nil
155+
}
156+
return &u
157+
}
158+
159+
// ToUint64OrNil returns a pointer to the passed uint64 value, or nil, if passed value is a zero value.
160+
func ToUint64OrNil(u uint64) *uint64 {
161+
if u == 0 {
162+
return nil
163+
}
164+
return &u
165+
}
166+
167+
// ToUintptrOrNil returns a pointer to the passed uintptr value, or nil, if passed value is a zero value.
168+
func ToUintptrOrNil(u uintptr) *uintptr {
169+
if u == 0 {
170+
return nil
171+
}
172+
return &u
173+
}
174+
175+
// ToDurationOrNil returns a pointer to the passed time.Duration value, or nil, if passed value is a zero value.
176+
func ToDurationOrNil(d time.Duration) *time.Duration {
177+
if d == 0 {
178+
return nil
179+
}
180+
return &d
181+
}
182+
183+
// ToTimeOrNil returns a pointer to the passed time.Time value, or nil, if passed value is a zero value (t.IsZero() returns true).
184+
func ToTimeOrNil(t time.Time) *time.Time {
185+
if t.IsZero() {
186+
return nil
187+
}
188+
return &t
189+
}

0 commit comments

Comments
 (0)