github.com/songzhibin97/gkit@v1.2.13/tools/pointer/types.go (about)

     1  package pointer
     2  
     3  // ToBytePointer 将byte类型的变量转换为对应的*byte指针类型
     4  func ToBytePointer(v byte) *byte {
     5  	return &v
     6  }
     7  
     8  // ToBytePointerOrNilIfZero 将byte类型的变量转换为对应的*byte指针类型,如果变量的值为0的话则返回nil指针
     9  func ToBytePointerOrNilIfZero(v byte) *byte {
    10  	if v == 0 {
    11  		return nil
    12  	}
    13  	return &v
    14  }
    15  
    16  // FromBytePointer 获取*byte类型的指针的实际值,如果指针为nil的话则返回0
    17  func FromBytePointer(p *byte) byte {
    18  	return FromBytePointerOrDefaultIfNil(p, 0)
    19  }
    20  
    21  // FromBytePointerOrDefaultIfNil 获取*byte类型的指针的实际值,如果指针为nil的话则返回defaultValue
    22  func FromBytePointerOrDefaultIfNil(v *byte, defaultValue byte) byte {
    23  	if v == nil {
    24  		return defaultValue
    25  	}
    26  	return *v
    27  }
    28  
    29  // ToComplex64Pointer 将complex64类型的变量转换为对应的*complex64指针类型
    30  func ToComplex64Pointer(v complex64) *complex64 {
    31  	return &v
    32  }
    33  
    34  // ToComplex64PointerOrNilIfZero 将complex64类型的变量转换为对应的*complex64指针类型,如果变量的值为0的话则返回nil指针
    35  func ToComplex64PointerOrNilIfZero(v complex64) *complex64 {
    36  	if v == 0 {
    37  		return nil
    38  	}
    39  	return &v
    40  }
    41  
    42  // FromComplex64Pointer 获取*complex64类型的指针的实际值,如果指针为nil的话则返回0
    43  func FromComplex64Pointer(p *complex64) complex64 {
    44  	return FromComplex64PointerOrDefaultIfNil(p, 0)
    45  }
    46  
    47  // FromComplex64PointerOrDefaultIfNil 获取*complex64类型的指针的实际值,如果指针为nil的话则返回defaultValue
    48  func FromComplex64PointerOrDefaultIfNil(v *complex64, defaultValue complex64) complex64 {
    49  	if v == nil {
    50  		return defaultValue
    51  	}
    52  	return *v
    53  }
    54  
    55  // ToComplex128Pointer 将complex128类型的变量转换为对应的*complex128指针类型
    56  func ToComplex128Pointer(v complex128) *complex128 {
    57  	return &v
    58  }
    59  
    60  // ToComplex128PointerOrNilIfZero 将complex128类型的变量转换为对应的*complex128指针类型,如果变量的值为0的话则返回nil指针
    61  func ToComplex128PointerOrNilIfZero(v complex128) *complex128 {
    62  	if v == 0 {
    63  		return nil
    64  	}
    65  	return &v
    66  }
    67  
    68  // FromComplex128Pointer 获取*complex128类型的指针的实际值,如果指针为nil的话则返回0
    69  func FromComplex128Pointer(p *complex128) complex128 {
    70  	return FromComplex128PointerOrDefaultIfNil(p, 0)
    71  }
    72  
    73  // FromComplex128PointerOrDefaultIfNil 获取*complex128类型的指针的实际值,如果指针为nil的话则返回defaultValue
    74  func FromComplex128PointerOrDefaultIfNil(v *complex128, defaultValue complex128) complex128 {
    75  	if v == nil {
    76  		return defaultValue
    77  	}
    78  	return *v
    79  }
    80  
    81  // ToFloat32Pointer 将float32类型的变量转换为对应的*float32指针类型
    82  func ToFloat32Pointer(v float32) *float32 {
    83  	return &v
    84  }
    85  
    86  // ToFloat32PointerOrNilIfZero 将float32类型的变量转换为对应的*float32指针类型,如果变量的值为0的话则返回nil指针
    87  func ToFloat32PointerOrNilIfZero(v float32) *float32 {
    88  	if v == 0 {
    89  		return nil
    90  	}
    91  	return &v
    92  }
    93  
    94  // FromFloat32Pointer 获取*float32类型的指针的实际值,如果指针为nil的话则返回0
    95  func FromFloat32Pointer(p *float32) float32 {
    96  	return FromFloat32PointerOrDefaultIfNil(p, 0)
    97  }
    98  
    99  // FromFloat32PointerOrDefaultIfNil 获取*float32类型的指针的实际值,如果指针为nil的话则返回defaultValue
   100  func FromFloat32PointerOrDefaultIfNil(v *float32, defaultValue float32) float32 {
   101  	if v == nil {
   102  		return defaultValue
   103  	}
   104  	return *v
   105  }
   106  
   107  // ToFloat64Pointer 将float64类型的变量转换为对应的*float64指针类型
   108  func ToFloat64Pointer(v float64) *float64 {
   109  	return &v
   110  }
   111  
   112  // ToFloat64PointerOrNilIfZero 将float64类型的变量转换为对应的*float64指针类型,如果变量的值为0的话则返回nil指针
   113  func ToFloat64PointerOrNilIfZero(v float64) *float64 {
   114  	if v == 0 {
   115  		return nil
   116  	}
   117  	return &v
   118  }
   119  
   120  // FromFloat64Pointer 获取*float64类型的指针的实际值,如果指针为nil的话则返回0
   121  func FromFloat64Pointer(p *float64) float64 {
   122  	return FromFloat64PointerOrDefaultIfNil(p, 0)
   123  }
   124  
   125  // FromFloat64PointerOrDefaultIfNil 获取*float64类型的指针的实际值,如果指针为nil的话则返回defaultValue
   126  func FromFloat64PointerOrDefaultIfNil(v *float64, defaultValue float64) float64 {
   127  	if v == nil {
   128  		return defaultValue
   129  	}
   130  	return *v
   131  }
   132  
   133  // ToIntPointer 将int类型的变量转换为对应的*int指针类型
   134  func ToIntPointer(v int) *int {
   135  	return &v
   136  }
   137  
   138  // ToIntPointerOrNilIfZero 将int类型的变量转换为对应的*int指针类型,如果变量的值为0的话则返回nil指针
   139  func ToIntPointerOrNilIfZero(v int) *int {
   140  	if v == 0 {
   141  		return nil
   142  	}
   143  	return &v
   144  }
   145  
   146  // FromIntPointer 获取*int类型的指针的实际值,如果指针为nil的话则返回0
   147  func FromIntPointer(p *int) int {
   148  	return FromIntPointerOrDefaultIfNil(p, 0)
   149  }
   150  
   151  // FromIntPointerOrDefaultIfNil 获取*int类型的指针的实际值,如果指针为nil的话则返回defaultValue
   152  func FromIntPointerOrDefaultIfNil(v *int, defaultValue int) int {
   153  	if v == nil {
   154  		return defaultValue
   155  	}
   156  	return *v
   157  }
   158  
   159  // ToInt8Pointer 将int8类型的变量转换为对应的*int8指针类型
   160  func ToInt8Pointer(v int8) *int8 {
   161  	return &v
   162  }
   163  
   164  // ToInt8PointerOrNilIfZero 将int8类型的变量转换为对应的*int8指针类型,如果变量的值为0的话则返回nil指针
   165  func ToInt8PointerOrNilIfZero(v int8) *int8 {
   166  	if v == 0 {
   167  		return nil
   168  	}
   169  	return &v
   170  }
   171  
   172  // FromInt8Pointer 获取*int8类型的指针的实际值,如果指针为nil的话则返回0
   173  func FromInt8Pointer(p *int8) int8 {
   174  	return FromInt8PointerOrDefaultIfNil(p, 0)
   175  }
   176  
   177  // FromInt8PointerOrDefaultIfNil 获取*int8类型的指针的实际值,如果指针为nil的话则返回defaultValue
   178  func FromInt8PointerOrDefaultIfNil(v *int8, defaultValue int8) int8 {
   179  	if v == nil {
   180  		return defaultValue
   181  	}
   182  	return *v
   183  }
   184  
   185  // ToInt16Pointer 将int16类型的变量转换为对应的*int16指针类型
   186  func ToInt16Pointer(v int16) *int16 {
   187  	return &v
   188  }
   189  
   190  // ToInt16PointerOrNilIfZero 将int16类型的变量转换为对应的*int16指针类型,如果变量的值为0的话则返回nil指针
   191  func ToInt16PointerOrNilIfZero(v int16) *int16 {
   192  	if v == 0 {
   193  		return nil
   194  	}
   195  	return &v
   196  }
   197  
   198  // FromInt16Pointer 获取*int16类型的指针的实际值,如果指针为nil的话则返回0
   199  func FromInt16Pointer(p *int16) int16 {
   200  	return FromInt16PointerOrDefaultIfNil(p, 0)
   201  }
   202  
   203  // FromInt16PointerOrDefaultIfNil 获取*int16类型的指针的实际值,如果指针为nil的话则返回defaultValue
   204  func FromInt16PointerOrDefaultIfNil(v *int16, defaultValue int16) int16 {
   205  	if v == nil {
   206  		return defaultValue
   207  	}
   208  	return *v
   209  }
   210  
   211  // ToInt32Pointer 将int32类型的变量转换为对应的*int32指针类型
   212  func ToInt32Pointer(v int32) *int32 {
   213  	return &v
   214  }
   215  
   216  // ToInt32PointerOrNilIfZero 将int32类型的变量转换为对应的*int32指针类型,如果变量的值为0的话则返回nil指针
   217  func ToInt32PointerOrNilIfZero(v int32) *int32 {
   218  	if v == 0 {
   219  		return nil
   220  	}
   221  	return &v
   222  }
   223  
   224  // FromInt32Pointer 获取*int32类型的指针的实际值,如果指针为nil的话则返回0
   225  func FromInt32Pointer(p *int32) int32 {
   226  	return FromInt32PointerOrDefaultIfNil(p, 0)
   227  }
   228  
   229  // FromInt32PointerOrDefaultIfNil 获取*int32类型的指针的实际值,如果指针为nil的话则返回defaultValue
   230  func FromInt32PointerOrDefaultIfNil(v *int32, defaultValue int32) int32 {
   231  	if v == nil {
   232  		return defaultValue
   233  	}
   234  	return *v
   235  }
   236  
   237  // ToInt64Pointer 将int64类型的变量转换为对应的*int64指针类型
   238  func ToInt64Pointer(v int64) *int64 {
   239  	return &v
   240  }
   241  
   242  // ToInt64PointerOrNilIfZero 将int64类型的变量转换为对应的*int64指针类型,如果变量的值为0的话则返回nil指针
   243  func ToInt64PointerOrNilIfZero(v int64) *int64 {
   244  	if v == 0 {
   245  		return nil
   246  	}
   247  	return &v
   248  }
   249  
   250  // FromInt64Pointer 获取*int64类型的指针的实际值,如果指针为nil的话则返回0
   251  func FromInt64Pointer(p *int64) int64 {
   252  	return FromInt64PointerOrDefaultIfNil(p, 0)
   253  }
   254  
   255  // FromInt64PointerOrDefaultIfNil 获取*int64类型的指针的实际值,如果指针为nil的话则返回defaultValue
   256  func FromInt64PointerOrDefaultIfNil(v *int64, defaultValue int64) int64 {
   257  	if v == nil {
   258  		return defaultValue
   259  	}
   260  	return *v
   261  }
   262  
   263  // ToRunePointer 将rune类型的变量转换为对应的*rune指针类型
   264  func ToRunePointer(v rune) *rune {
   265  	return &v
   266  }
   267  
   268  // ToRunePointerOrNilIfZero 将rune类型的变量转换为对应的*rune指针类型,如果变量的值为0的话则返回nil指针
   269  func ToRunePointerOrNilIfZero(v rune) *rune {
   270  	if v == 0 {
   271  		return nil
   272  	}
   273  	return &v
   274  }
   275  
   276  // FromRunePointer 获取*rune类型的指针的实际值,如果指针为nil的话则返回0
   277  func FromRunePointer(p *rune) rune {
   278  	return FromRunePointerOrDefaultIfNil(p, 0)
   279  }
   280  
   281  // FromRunePointerOrDefaultIfNil 获取*rune类型的指针的实际值,如果指针为nil的话则返回defaultValue
   282  func FromRunePointerOrDefaultIfNil(v *rune, defaultValue rune) rune {
   283  	if v == nil {
   284  		return defaultValue
   285  	}
   286  	return *v
   287  }
   288  
   289  // ToUintPointer 将uint类型的变量转换为对应的*uint指针类型
   290  func ToUintPointer(v uint) *uint {
   291  	return &v
   292  }
   293  
   294  // ToUintPointerOrNilIfZero 将uint类型的变量转换为对应的*uint指针类型,如果变量的值为0的话则返回nil指针
   295  func ToUintPointerOrNilIfZero(v uint) *uint {
   296  	if v == 0 {
   297  		return nil
   298  	}
   299  	return &v
   300  }
   301  
   302  // FromUintPointer 获取*uint类型的指针的实际值,如果指针为nil的话则返回0
   303  func FromUintPointer(p *uint) uint {
   304  	return FromUintPointerOrDefaultIfNil(p, 0)
   305  }
   306  
   307  // FromUintPointerOrDefaultIfNil 获取*uint类型的指针的实际值,如果指针为nil的话则返回defaultValue
   308  func FromUintPointerOrDefaultIfNil(v *uint, defaultValue uint) uint {
   309  	if v == nil {
   310  		return defaultValue
   311  	}
   312  	return *v
   313  }
   314  
   315  // ToUint8Pointer 将uint8类型的变量转换为对应的*uint8指针类型
   316  func ToUint8Pointer(v uint8) *uint8 {
   317  	return &v
   318  }
   319  
   320  // ToUint8PointerOrNilIfZero 将uint8类型的变量转换为对应的*uint8指针类型,如果变量的值为0的话则返回nil指针
   321  func ToUint8PointerOrNilIfZero(v uint8) *uint8 {
   322  	if v == 0 {
   323  		return nil
   324  	}
   325  	return &v
   326  }
   327  
   328  // FromUint8Pointer 获取*uint8类型的指针的实际值,如果指针为nil的话则返回0
   329  func FromUint8Pointer(p *uint8) uint8 {
   330  	return FromUint8PointerOrDefaultIfNil(p, 0)
   331  }
   332  
   333  // FromUint8PointerOrDefaultIfNil 获取*uint8类型的指针的实际值,如果指针为nil的话则返回defaultValue
   334  func FromUint8PointerOrDefaultIfNil(v *uint8, defaultValue uint8) uint8 {
   335  	if v == nil {
   336  		return defaultValue
   337  	}
   338  	return *v
   339  }
   340  
   341  // ToUint16Pointer 将uint16类型的变量转换为对应的*uint16指针类型
   342  func ToUint16Pointer(v uint16) *uint16 {
   343  	return &v
   344  }
   345  
   346  // ToUint16PointerOrNilIfZero 将uint16类型的变量转换为对应的*uint16指针类型,如果变量的值为0的话则返回nil指针
   347  func ToUint16PointerOrNilIfZero(v uint16) *uint16 {
   348  	if v == 0 {
   349  		return nil
   350  	}
   351  	return &v
   352  }
   353  
   354  // FromUint16Pointer 获取*uint16类型的指针的实际值,如果指针为nil的话则返回0
   355  func FromUint16Pointer(p *uint16) uint16 {
   356  	return FromUint16PointerOrDefaultIfNil(p, 0)
   357  }
   358  
   359  // FromUint16PointerOrDefaultIfNil 获取*uint16类型的指针的实际值,如果指针为nil的话则返回defaultValue
   360  func FromUint16PointerOrDefaultIfNil(v *uint16, defaultValue uint16) uint16 {
   361  	if v == nil {
   362  		return defaultValue
   363  	}
   364  	return *v
   365  }
   366  
   367  // ToUint32Pointer 将uint32类型的变量转换为对应的*uint32指针类型
   368  func ToUint32Pointer(v uint32) *uint32 {
   369  	return &v
   370  }
   371  
   372  // ToUint32PointerOrNilIfZero 将uint32类型的变量转换为对应的*uint32指针类型,如果变量的值为0的话则返回nil指针
   373  func ToUint32PointerOrNilIfZero(v uint32) *uint32 {
   374  	if v == 0 {
   375  		return nil
   376  	}
   377  	return &v
   378  }
   379  
   380  // FromUint32Pointer 获取*uint32类型的指针的实际值,如果指针为nil的话则返回0
   381  func FromUint32Pointer(p *uint32) uint32 {
   382  	return FromUint32PointerOrDefaultIfNil(p, 0)
   383  }
   384  
   385  // FromUint32PointerOrDefaultIfNil 获取*uint32类型的指针的实际值,如果指针为nil的话则返回defaultValue
   386  func FromUint32PointerOrDefaultIfNil(v *uint32, defaultValue uint32) uint32 {
   387  	if v == nil {
   388  		return defaultValue
   389  	}
   390  	return *v
   391  }
   392  
   393  // ToUint64Pointer 将uint64类型的变量转换为对应的*uint64指针类型
   394  func ToUint64Pointer(v uint64) *uint64 {
   395  	return &v
   396  }
   397  
   398  // ToUint64PointerOrNilIfZero 将uint64类型的变量转换为对应的*uint64指针类型,如果变量的值为0的话则返回nil指针
   399  func ToUint64PointerOrNilIfZero(v uint64) *uint64 {
   400  	if v == 0 {
   401  		return nil
   402  	}
   403  	return &v
   404  }
   405  
   406  // FromUint64Pointer 获取*uint64类型的指针的实际值,如果指针为nil的话则返回0
   407  func FromUint64Pointer(p *uint64) uint64 {
   408  	return FromUint64PointerOrDefaultIfNil(p, 0)
   409  }
   410  
   411  // FromUint64PointerOrDefaultIfNil 获取*uint64类型的指针的实际值,如果指针为nil的话则返回defaultValue
   412  func FromUint64PointerOrDefaultIfNil(v *uint64, defaultValue uint64) uint64 {
   413  	if v == nil {
   414  		return defaultValue
   415  	}
   416  	return *v
   417  }
   418  
   419  // ToUintptrPointer 将uintptr类型的变量转换为对应的*uintptr指针类型
   420  func ToUintptrPointer(v uintptr) *uintptr {
   421  	return &v
   422  }
   423  
   424  // ToUintptrPointerOrNilIfZero 将uintptr类型的变量转换为对应的*uintptr指针类型,如果变量的值为0的话则返回nil指针
   425  func ToUintptrPointerOrNilIfZero(v uintptr) *uintptr {
   426  	if v == 0 {
   427  		return nil
   428  	}
   429  	return &v
   430  }
   431  
   432  // FromUintptrPointer 获取*uintptr类型的指针的实际值,如果指针为nil的话则返回0
   433  func FromUintptrPointer(p *uintptr) uintptr {
   434  	return FromUintptrPointerOrDefaultIfNil(p, 0)
   435  }
   436  
   437  // FromUintptrPointerOrDefaultIfNil 获取*uintptr类型的指针的实际值,如果指针为nil的话则返回defaultValue
   438  func FromUintptrPointerOrDefaultIfNil(v *uintptr, defaultValue uintptr) uintptr {
   439  	if v == nil {
   440  		return defaultValue
   441  	}
   442  	return *v
   443  }