sugar/sugar.go

140 lines
2.8 KiB
Go
Raw Normal View History

2021-08-31 01:26:45 -04:00
// Package sugar provides convenience functions for keeping code clean and less repetitive.
2021-08-21 09:21:28 -04:00
package sugar
2021-08-31 01:25:56 -04:00
import (
"fmt"
"os"
)
2021-08-21 09:21:28 -04:00
/*
* Literal Addressers
*/
2021-08-31 01:25:56 -04:00
// IntPtr takes an int literal and returns a pointer.
2021-08-21 09:21:28 -04:00
func IntPtr(v int) *int {
return &v
}
2021-08-31 01:25:56 -04:00
// Int8Ptr takes an int8 literal and returns a pointer.
2021-08-21 09:21:28 -04:00
func Int8Ptr(v int8) *int8 {
return &v
}
2021-08-31 01:25:56 -04:00
// Int16Ptr takes an int16 literal and returns a pointer.
2021-08-21 09:21:28 -04:00
func Int16Ptr(v int16) *int16 {
return &v
}
2021-08-31 01:25:56 -04:00
// Int32Ptr takes an int32 literal and returns a pointer.
2021-08-21 09:21:28 -04:00
func Int32Ptr(v int32) *int32 {
return &v
}
2021-08-31 01:25:56 -04:00
// RunePtr takes a rune literal and returns a pointer.
2021-08-21 09:21:28 -04:00
func RunePtr(v rune) *rune {
return &v
}
2021-08-31 01:25:56 -04:00
// Int64Ptr takes an int64 literal and returns a pointer.
2021-08-21 09:21:28 -04:00
func Int64Ptr(v int64) *int64 {
return &v
}
2021-08-31 01:25:56 -04:00
// UintPtr takes a uint literal and returns a pointer.
2021-08-21 09:21:28 -04:00
func UintPtr(v uint) *uint {
return &v
}
2021-08-31 01:25:56 -04:00
// Uint8 takes a uint8 literal and returns a pointer.
2021-08-21 09:21:28 -04:00
func Uint8Ptr(v uint8) *uint8 {
return &v
}
2021-08-31 01:25:56 -04:00
// BytePtr takes a byte literal and returns a pointer.
2021-08-21 09:21:28 -04:00
func BytePtr(v byte) *byte {
return &v
}
2021-08-31 01:25:56 -04:00
// Uint16Ptr takes a uint16 literal and returns a pointer.
2021-08-21 09:21:28 -04:00
func Uint16Ptr(v uint16) *uint16 {
return &v
}
2021-08-31 01:25:56 -04:00
// Uint32Ptr takes uint32 literal and returns a pointer.
2021-08-21 09:21:28 -04:00
func Uint32Ptr(v uint32) *uint32 {
return &v
}
2021-08-31 01:25:56 -04:00
// Uint64Ptr takes uint64 literal and returns a pointer.
2021-08-21 09:21:28 -04:00
func Uint64Ptr(v uint64) *uint64 {
return &v
}
2021-08-31 01:25:56 -04:00
// Float32Ptr takes float32 literal and returns a pointer.
2021-08-21 09:21:28 -04:00
func Float32Ptr(v float32) *float32 {
return &v
}
2021-08-31 01:25:56 -04:00
// Float64Ptr takes a float64 literal and returns a pointer.
2021-08-21 09:21:28 -04:00
func Float64Ptr(v float64) *float64 {
return &v
}
2021-08-31 01:25:56 -04:00
// Complex64Ptr takes a complex64 literal and returns a pointer.
2021-08-21 09:21:28 -04:00
func Complex64Ptr(v complex64) *complex64 {
return &v
}
2021-08-31 01:25:56 -04:00
// Complex128Ptr takes a complex128 literal and returns a pointer.
2021-08-21 09:21:28 -04:00
func Complex128Ptr(v complex128) *complex128 {
return &v
}
2021-08-31 01:25:56 -04:00
// StringPtr takes a string literal and returns a pointer.
2021-08-21 09:21:28 -04:00
func StringPtr(v string) *string {
return &v
}
2021-08-31 01:25:56 -04:00
// StrPtr is an alias of StringPtr.
2021-08-21 09:21:28 -04:00
func StrPtr(v string) *string {
return &v
}
2021-08-31 01:25:56 -04:00
// BoolPtr takes a bool literal and returns a pointer.
2021-08-21 09:21:28 -04:00
func BoolPtr(v bool) *bool {
return &v
}
/*
* Error Handling
*/
2021-08-31 01:25:56 -04:00
// Check takes an error and prints it if it is not nil; but will continue.
2021-08-21 09:21:28 -04:00
func Check(err error) {
if err != nil {
fmt.Printf("%+v", err)
}
}
2021-08-31 01:25:56 -04:00
// CheckLog takes an error and a format function for leveraging a custom printer like a logger.
2021-08-21 09:21:28 -04:00
func CheckLog(err error, fn func(format string, a ...interface{})) {
if err != nil {
fn("%+v", err)
}
}
2021-08-31 01:25:56 -04:00
// CheckPanic takes an error and will panic if it is not nil.
2021-08-21 09:21:28 -04:00
func CheckPanic(err error) {
if err != nil {
panic(err)
}
}
2021-08-31 01:25:56 -04:00
// CheckExit takes an error and will print it and exit with status 1 if it is not nil.
func CheckExit(err error) {
if err != nil {
fmt.Printf("%+v", err)
os.Exit(1)
}
}