1
2 package ptr
3
4 import (
5 "time"
6 )
7
8
9
10
11 func ToBool(p *bool) (v bool) {
12 if p == nil {
13 return v
14 }
15
16 return *p
17 }
18
19
20
21
22 func ToBoolSlice(vs []*bool) []bool {
23 ps := make([]bool, len(vs))
24 for i, v := range vs {
25 ps[i] = ToBool(v)
26 }
27
28 return ps
29 }
30
31
32
33
34 func ToBoolMap(vs map[string]*bool) map[string]bool {
35 ps := make(map[string]bool, len(vs))
36 for k, v := range vs {
37 ps[k] = ToBool(v)
38 }
39
40 return ps
41 }
42
43
44
45
46 func ToByte(p *byte) (v byte) {
47 if p == nil {
48 return v
49 }
50
51 return *p
52 }
53
54
55
56
57 func ToByteSlice(vs []*byte) []byte {
58 ps := make([]byte, len(vs))
59 for i, v := range vs {
60 ps[i] = ToByte(v)
61 }
62
63 return ps
64 }
65
66
67
68
69 func ToByteMap(vs map[string]*byte) map[string]byte {
70 ps := make(map[string]byte, len(vs))
71 for k, v := range vs {
72 ps[k] = ToByte(v)
73 }
74
75 return ps
76 }
77
78
79
80
81 func ToString(p *string) (v string) {
82 if p == nil {
83 return v
84 }
85
86 return *p
87 }
88
89
90
91
92 func ToStringSlice(vs []*string) []string {
93 ps := make([]string, len(vs))
94 for i, v := range vs {
95 ps[i] = ToString(v)
96 }
97
98 return ps
99 }
100
101
102
103
104 func ToStringMap(vs map[string]*string) map[string]string {
105 ps := make(map[string]string, len(vs))
106 for k, v := range vs {
107 ps[k] = ToString(v)
108 }
109
110 return ps
111 }
112
113
114
115
116 func ToInt(p *int) (v int) {
117 if p == nil {
118 return v
119 }
120
121 return *p
122 }
123
124
125
126
127 func ToIntSlice(vs []*int) []int {
128 ps := make([]int, len(vs))
129 for i, v := range vs {
130 ps[i] = ToInt(v)
131 }
132
133 return ps
134 }
135
136
137
138
139 func ToIntMap(vs map[string]*int) map[string]int {
140 ps := make(map[string]int, len(vs))
141 for k, v := range vs {
142 ps[k] = ToInt(v)
143 }
144
145 return ps
146 }
147
148
149
150
151 func ToInt8(p *int8) (v int8) {
152 if p == nil {
153 return v
154 }
155
156 return *p
157 }
158
159
160
161
162 func ToInt8Slice(vs []*int8) []int8 {
163 ps := make([]int8, len(vs))
164 for i, v := range vs {
165 ps[i] = ToInt8(v)
166 }
167
168 return ps
169 }
170
171
172
173
174 func ToInt8Map(vs map[string]*int8) map[string]int8 {
175 ps := make(map[string]int8, len(vs))
176 for k, v := range vs {
177 ps[k] = ToInt8(v)
178 }
179
180 return ps
181 }
182
183
184
185
186 func ToInt16(p *int16) (v int16) {
187 if p == nil {
188 return v
189 }
190
191 return *p
192 }
193
194
195
196
197 func ToInt16Slice(vs []*int16) []int16 {
198 ps := make([]int16, len(vs))
199 for i, v := range vs {
200 ps[i] = ToInt16(v)
201 }
202
203 return ps
204 }
205
206
207
208
209 func ToInt16Map(vs map[string]*int16) map[string]int16 {
210 ps := make(map[string]int16, len(vs))
211 for k, v := range vs {
212 ps[k] = ToInt16(v)
213 }
214
215 return ps
216 }
217
218
219
220
221 func ToInt32(p *int32) (v int32) {
222 if p == nil {
223 return v
224 }
225
226 return *p
227 }
228
229
230
231
232 func ToInt32Slice(vs []*int32) []int32 {
233 ps := make([]int32, len(vs))
234 for i, v := range vs {
235 ps[i] = ToInt32(v)
236 }
237
238 return ps
239 }
240
241
242
243
244 func ToInt32Map(vs map[string]*int32) map[string]int32 {
245 ps := make(map[string]int32, len(vs))
246 for k, v := range vs {
247 ps[k] = ToInt32(v)
248 }
249
250 return ps
251 }
252
253
254
255
256 func ToInt64(p *int64) (v int64) {
257 if p == nil {
258 return v
259 }
260
261 return *p
262 }
263
264
265
266
267 func ToInt64Slice(vs []*int64) []int64 {
268 ps := make([]int64, len(vs))
269 for i, v := range vs {
270 ps[i] = ToInt64(v)
271 }
272
273 return ps
274 }
275
276
277
278
279 func ToInt64Map(vs map[string]*int64) map[string]int64 {
280 ps := make(map[string]int64, len(vs))
281 for k, v := range vs {
282 ps[k] = ToInt64(v)
283 }
284
285 return ps
286 }
287
288
289
290
291 func ToUint(p *uint) (v uint) {
292 if p == nil {
293 return v
294 }
295
296 return *p
297 }
298
299
300
301
302 func ToUintSlice(vs []*uint) []uint {
303 ps := make([]uint, len(vs))
304 for i, v := range vs {
305 ps[i] = ToUint(v)
306 }
307
308 return ps
309 }
310
311
312
313
314 func ToUintMap(vs map[string]*uint) map[string]uint {
315 ps := make(map[string]uint, len(vs))
316 for k, v := range vs {
317 ps[k] = ToUint(v)
318 }
319
320 return ps
321 }
322
323
324
325
326 func ToUint8(p *uint8) (v uint8) {
327 if p == nil {
328 return v
329 }
330
331 return *p
332 }
333
334
335
336
337 func ToUint8Slice(vs []*uint8) []uint8 {
338 ps := make([]uint8, len(vs))
339 for i, v := range vs {
340 ps[i] = ToUint8(v)
341 }
342
343 return ps
344 }
345
346
347
348
349 func ToUint8Map(vs map[string]*uint8) map[string]uint8 {
350 ps := make(map[string]uint8, len(vs))
351 for k, v := range vs {
352 ps[k] = ToUint8(v)
353 }
354
355 return ps
356 }
357
358
359
360
361 func ToUint16(p *uint16) (v uint16) {
362 if p == nil {
363 return v
364 }
365
366 return *p
367 }
368
369
370
371
372 func ToUint16Slice(vs []*uint16) []uint16 {
373 ps := make([]uint16, len(vs))
374 for i, v := range vs {
375 ps[i] = ToUint16(v)
376 }
377
378 return ps
379 }
380
381
382
383
384 func ToUint16Map(vs map[string]*uint16) map[string]uint16 {
385 ps := make(map[string]uint16, len(vs))
386 for k, v := range vs {
387 ps[k] = ToUint16(v)
388 }
389
390 return ps
391 }
392
393
394
395
396 func ToUint32(p *uint32) (v uint32) {
397 if p == nil {
398 return v
399 }
400
401 return *p
402 }
403
404
405
406
407 func ToUint32Slice(vs []*uint32) []uint32 {
408 ps := make([]uint32, len(vs))
409 for i, v := range vs {
410 ps[i] = ToUint32(v)
411 }
412
413 return ps
414 }
415
416
417
418
419 func ToUint32Map(vs map[string]*uint32) map[string]uint32 {
420 ps := make(map[string]uint32, len(vs))
421 for k, v := range vs {
422 ps[k] = ToUint32(v)
423 }
424
425 return ps
426 }
427
428
429
430
431 func ToUint64(p *uint64) (v uint64) {
432 if p == nil {
433 return v
434 }
435
436 return *p
437 }
438
439
440
441
442 func ToUint64Slice(vs []*uint64) []uint64 {
443 ps := make([]uint64, len(vs))
444 for i, v := range vs {
445 ps[i] = ToUint64(v)
446 }
447
448 return ps
449 }
450
451
452
453
454 func ToUint64Map(vs map[string]*uint64) map[string]uint64 {
455 ps := make(map[string]uint64, len(vs))
456 for k, v := range vs {
457 ps[k] = ToUint64(v)
458 }
459
460 return ps
461 }
462
463
464
465
466 func ToFloat32(p *float32) (v float32) {
467 if p == nil {
468 return v
469 }
470
471 return *p
472 }
473
474
475
476
477 func ToFloat32Slice(vs []*float32) []float32 {
478 ps := make([]float32, len(vs))
479 for i, v := range vs {
480 ps[i] = ToFloat32(v)
481 }
482
483 return ps
484 }
485
486
487
488
489 func ToFloat32Map(vs map[string]*float32) map[string]float32 {
490 ps := make(map[string]float32, len(vs))
491 for k, v := range vs {
492 ps[k] = ToFloat32(v)
493 }
494
495 return ps
496 }
497
498
499
500
501 func ToFloat64(p *float64) (v float64) {
502 if p == nil {
503 return v
504 }
505
506 return *p
507 }
508
509
510
511
512 func ToFloat64Slice(vs []*float64) []float64 {
513 ps := make([]float64, len(vs))
514 for i, v := range vs {
515 ps[i] = ToFloat64(v)
516 }
517
518 return ps
519 }
520
521
522
523
524 func ToFloat64Map(vs map[string]*float64) map[string]float64 {
525 ps := make(map[string]float64, len(vs))
526 for k, v := range vs {
527 ps[k] = ToFloat64(v)
528 }
529
530 return ps
531 }
532
533
534
535
536 func ToTime(p *time.Time) (v time.Time) {
537 if p == nil {
538 return v
539 }
540
541 return *p
542 }
543
544
545
546
547 func ToTimeSlice(vs []*time.Time) []time.Time {
548 ps := make([]time.Time, len(vs))
549 for i, v := range vs {
550 ps[i] = ToTime(v)
551 }
552
553 return ps
554 }
555
556
557
558
559 func ToTimeMap(vs map[string]*time.Time) map[string]time.Time {
560 ps := make(map[string]time.Time, len(vs))
561 for k, v := range vs {
562 ps[k] = ToTime(v)
563 }
564
565 return ps
566 }
567
568
569
570
571 func ToDuration(p *time.Duration) (v time.Duration) {
572 if p == nil {
573 return v
574 }
575
576 return *p
577 }
578
579
580
581
582 func ToDurationSlice(vs []*time.Duration) []time.Duration {
583 ps := make([]time.Duration, len(vs))
584 for i, v := range vs {
585 ps[i] = ToDuration(v)
586 }
587
588 return ps
589 }
590
591
592
593
594 func ToDurationMap(vs map[string]*time.Duration) map[string]time.Duration {
595 ps := make(map[string]time.Duration, len(vs))
596 for k, v := range vs {
597 ps[k] = ToDuration(v)
598 }
599
600 return ps
601 }
602
View as plain text