Files
appcore/ptr/ptr.go

58 lines
843 B
Go
Raw Normal View History

2025-06-16 22:19:00 +05:30
// Copyright 2024 Patial Tech (Ankit Patial).
2025-06-16 22:26:47 +05:30
//
// This file is part of code.patial.tech/go/appcore, which is MIT licensed.
// See http://opensource.org/licenses/MIT
2025-06-16 22:19:00 +05:30
package ptr
import "strings"
func Ref[T string | bool | Num](v T) *T {
2025-06-16 22:19:00 +05:30
return &v
}
func Deref[T any](v *T) T {
2025-06-16 22:19:00 +05:30
if v == nil {
var a T
return a
2025-06-16 22:19:00 +05:30
}
return *v
}
func Bool(v bool) *bool {
return &v
}
func GetBool(v *bool) bool {
return Deref(v)
}
2025-06-16 22:19:00 +05:30
func Str(v string) *string {
return &v
}
2025-06-16 22:37:34 +05:30
func GetStr(v *string) string {
return Deref(v)
2025-06-16 22:19:00 +05:30
}
func StrTrim(v *string) *string {
if v == nil {
return nil
}
*v = strings.TrimSpace(*v)
return v
}
type Num interface {
uint8 | int8 | uint16 | int16 | uint32 | int32 | uint64 | int64 | uint | int | float32 | float64
2025-06-16 22:19:00 +05:30
}
func Number[T Num](v T) *T {
2025-06-16 22:19:00 +05:30
return &v
}
func GetNumber[T Num](v *T) T {
return Deref(v)
2025-06-16 22:19:00 +05:30
}