import "github.com/fufuok/utils"- Constants
- Variables
- func B2S(b []byte) string
- func B64Decode(s string) []byte
- func B64Encode(b []byte) string
- func B64UrlDecode(s string) []byte
- func B64UrlEncode(b []byte) string
- func BeginOfDay(t time.Time) time.Time
- func BeginOfHour(t time.Time) time.Time
- func BeginOfLastMonth(t time.Time) time.Time
- func BeginOfLastWeek(t time.Time) time.Time
- func BeginOfMinute(t time.Time) time.Time
- func BeginOfMonth(t time.Time) time.Time
- func BeginOfNextMonth(t time.Time) time.Time
- func BeginOfNextWeek(t time.Time) time.Time
- func BeginOfSecond(t time.Time) time.Time
- func BeginOfTomorrow(t time.Time) time.Time
- func BeginOfWeek(t time.Time) time.Time
- func BeginOfYear(t time.Time) time.Time
- func BeginOfYesterday(t time.Time) time.Time
- func BigComma(b *big.Int) string
- func BigCommaf(v *big.Float) string
- func Bigoom(n, b *big.Int) (float64, int)
- func CPUTicks() int64
- func CallPath() string
- func CheckDomain(name string) error
- func Comma(v int64) string
- func Commaf(v float64) string
- func Commai(v int) string
- func Commau(v uint64) string
- func CopyB2S(b []byte) string
- func CopyBytes(b []byte) []byte
- func CopyS2B(s string) []byte
- func CopyString(s string) string
- func CutBytes(s, sep []byte) (before, after []byte, found bool)
- func CutString(s, sep string) (before, after string, found bool)
- func DaysInMonth(year int, m time.Month) int
- func DaysInYear(year int) int
- func EncodeUUID(id []byte) []byte
- func EndOfDay(t time.Time) time.Time
- func EndOfHour(t time.Time) time.Time
- func EndOfLastMonth(t time.Time) time.Time
- func EndOfLastWeek(t time.Time) time.Time
- func EndOfMinute(t time.Time) time.Time
- func EndOfMonth(t time.Time) time.Time
- func EndOfNextMonth(t time.Time) time.Time
- func EndOfNextWeek(t time.Time) time.Time
- func EndOfSecond(t time.Time) time.Time
- func EndOfTomorrow(t time.Time) time.Time
- func EndOfWeek(t time.Time) time.Time
- func EndOfYear(t time.Time) time.Time
- func EndOfYesterday(t time.Time) time.Time
- func EqualFold(b, s string) bool
- func EqualFoldBytes(b, s []byte) bool
- func Executable(evalSymlinks ...bool) string
- func ExecutableDir(evalSymlinks ...bool) string
- func FastIntn(n int) int
- func FastRand() uint32
- func FastRand64() uint64
- func FastRandn(n uint32) uint32
- func FastRandu() uint
- func FirstString(s, sep string, defaultStr ...string) string
- func GetBytes(v interface{}, defaultVal ...[]byte) []byte
- func GetDomain(name string) string
- func GetIPPort(addr net.Addr) (ip net.IP, port int, err error)
- func GetInt(v interface{}, defaultInt ...int) int
- func GetMonthDays(t time.Time) int
- func GetNotInternalIPv4(ip, defaultIP net.IP, flag ...bool) net.IP
- func GetNotInternalIPv4String(ip, defaultIP string, flag ...bool) string
- func GetSafeB2S(b []byte, defaultVal ...string) string
- func GetSafeBytes(b []byte, defaultVal ...[]byte) []byte
- func GetSafeS2B(s string, defaultVal ...[]byte) []byte
- func GetSafeString(s string, defaultVal ...string) string
- func GetString(v interface{}, defaultVal ...string) string
- func GoroutineID() (uint64, error)
- func Gzip(data []byte) ([]byte, error)
- func GzipLevel(data []byte, level int) (dst []byte, err error)
- func HumanBaseBytes(v uint64, base float64, sizes []string) string
- func HumanBigBytes(s *big.Int) string
- func HumanBigIBytes(s *big.Int) string
- func HumanBigKbps(s *big.Int) string
- func HumanBytes(v uint64) string
- func HumanGBMB(v uint64) string
- func HumanIBytes(v uint64) string
- func HumanIntBytes(v int) string
- func HumanIntIBytes(v int) string
- func HumanIntKbps(v int) string
- func HumanKbps(v uint64) string
- func ID() uint64
- func IPv42Long(ip net.IP) int
- func IPv42LongLittle(ip net.IP) int
- func IPv4String2Long(ip string) int
- func IPv4String2LongLittle(ip string) int
- func IPv62Int(ip net.IP) *big.Int
- func IPv6String2Int(ip string) *big.Int
- func InIPNet(ip net.IP, ipNets map[*net.IPNet]struct{}) bool
- func InIPNetString(ip string, ipNets map[*net.IPNet]struct{}) bool
- func InInts(slice []int, n int) bool
- func InStrings(ss []string, s string) bool
- func InitCSTLocation() (name string, loc *time.Location, cst *time.Location, ok bool)
- func InitChinaLocation() *time.Location
- func InitLocation(name string) (*time.Location, bool)
- func Int2IPv6(ipInt *big.Int) net.IP
- func Int2IPv6String(n *big.Int) string
- func IsIP(ip string) bool
- func IsIPv4(s string) bool
- func IsIPv6(s string) bool
- func IsInternalIPv4(ip net.IP) bool
- func IsInternalIPv4String(ip string) bool
- func IsLeapYear(year int) bool
- func IsLetter(s string) bool
- func IsLetterOrNumeric(s string) bool
- func IsNumeric(s string) bool
- func IsPrivateIP(ip net.IP) bool
- func IsPrivateIPString(ip string) bool
- func JoinBytes(b ...[]byte) []byte
- func JoinString(s ...string) string
- func JoinStringBytes(s ...string) []byte
- func LastString(s, sep string, defaultStr ...string) string
- func LeftPad(s, pad string, n int) string
- func LeftPadBytes(b, pad []byte, n int) []byte
- func Logn(n, b float64) float64
- func Long2IPv4(n int) net.IP
- func Long2IPv4String(n int) string
- func LongLittle2IPv4(n int) net.IP
- func LongLittle2IPv4String(n int) string
- func MaxInt(a, b int) int
- func MinInt(a, b int) int
- func MustBool(v interface{}) bool
- func MustInt(v interface{}) int
- func MustJSON(v interface{}) []byte
- func MustJSONIndent(v interface{}) []byte
- func MustJSONIndentString(v interface{}) string
- func MustJSONString(v interface{}) string
- func MustParseHumanBigBytes(s string, defaultVal ...*big.Int) *big.Int
- func MustParseHumanBytes(s string, defaultVal ...uint64) uint64
- func MustString(v interface{}, timeLayout ...string) string
- func NanoTime() int64
- func NewRand(seed ...int64) *rand.Rand
- func NewSpinLock() sync.Locker
- func Pad(s, pad string, n int) string
- func PadBytes(s, pad []byte, n int) []byte
- func ParseHostPort(s string) (net.IP, uint16, bool, error)
- func ParseHumanBigBytes(s string) (*big.Int, error)
- func ParseHumanBytes(s string) (uint64, error)
- func ParseIP(s string) (net.IP, bool)
- func ParseIPv4(ip string) net.IP
- func ParseIPv6(ip string) net.IP
- func ParseIPx(s string) (net.IP, bool)
- func ParseIPxWithNumeric(s string) (net.IP, bool)
- func ParseInts(s string) ([]int, error)
- func RandAlphaBytes(n int) []byte
- func RandAlphaString(n int) string
- func RandBytes(n int) []byte
- func RandBytesLetters(n int, letters string) []byte
- func RandDecBytes(n int) []byte
- func RandDecString(n int) string
- func RandHexBytes(n int) []byte
- func RandHexString(n int) string
- func RandInt(min, max int) int
- func RandString(n int) string
- func RandUint32(min, max uint32) uint32
- func Recover(cb ...RecoveryCallback)
- func RemoveRunes(s string, toRemove string) string
- func RemoveString(ss []string, s string) ([]string, bool)
- func ReplaceHost(a, b string) string
- func Reverse(s string) string
- func RightPad(s, pad string, n int) string
- func RightPadBytes(b, pad []byte, n int) []byte
- func Round(v float64, precision int) float64
- func RunPath() string
- func RuneReverse(s string) string
- func RuneSubString(s string, length int, suffix string) string
- func S2B(s string) []byte
- func SafeGo(fn func(), cb ...RecoveryCallback)
- func SafeGoCommonFunc(args interface{}, fn func(args interface{}), cb ...RecoveryCallback)
- func SafeGoWithContext(ctx context.Context, fn func(ctx context.Context), cb ...RecoveryCallback)
- func SearchInt(slice []int, n int) int
- func SearchString(ss []string, s string) int
- func Sleep(ctx context.Context, interval time.Duration) error
- func SplitHostPort(hostPort string) (host, port string)
- func SumInt(v ...int) int
- func ToLower(b string) string
- func ToLowerBytes(b []byte) []byte
- func ToUpper(b string) string
- func ToUpperBytes(b []byte) []byte
- func Trim(s string, cutset byte) string
- func TrimBytes(b []byte, cutset byte) []byte
- func TrimLeft(s string, cutset byte) string
- func TrimLeftBytes(b []byte, cutset byte) []byte
- func TrimRight(s string, cutset byte) string
- func TrimRightBytes(b []byte, cutset byte) []byte
- func TrimSlice(ss []string) []string
- func TruncStr(s string, maxLen int, suffix string) string
- func UUID() []byte
- func UUIDShort() string
- func UUIDSimple() string
- func UUIDString() string
- func Ungzip(data []byte) (src []byte, err error)
- func Unzip(data []byte) (src []byte, err error)
- func ValidOptionalPort(port string) bool
- func WaitNextMinute(t ...time.Time)
- func WaitNextMinuteWithTime(t ...time.Time) (now time.Time)
- func WaitNextSecond(t ...time.Time)
- func WaitNextSecondWithTime(t ...time.Time) (now time.Time)
- func WaitSignal(sig ...os.Signal) os.Signal
- func WaitUntilMinute(m int, t ...time.Time)
- func WaitUntilSecond(s int, t ...time.Time)
- func Zip(data []byte) ([]byte, error)
- func ZipLevel(data []byte, level int) (dst []byte, err error)
- type Bool
- func NewBool(val bool) *Bool
- func NewFalse() *Bool
- func NewTrue() *Bool
- func (x *Bool) CAS(old, new bool) bool
- func (x *Bool) CompareAndSwap(old, new bool) (swapped bool)
- func (x *Bool) Load() bool
- func (x *Bool) MarshalJSON() ([]byte, error)
- func (x *Bool) Store(val bool)
- func (x *Bool) StoreFalse()
- func (x *Bool) StoreTrue()
- func (x *Bool) String() string
- func (x *Bool) Swap(new bool) (old bool)
- func (x *Bool) Toggle() (old bool)
- func (x *Bool) UnmarshalJSON(b []byte) error
- type NoCmp
- type NoCopy
- type RecoveryCallback
- type TryMutex
Ref: dustin/go-humanize IEC Sizes. kibis of bits
const (
Byte = 1 << (iota * 10)
KiByte
MiByte
GiByte
TiByte
PiByte
EiByte
)const (
IByte = 1
KByte = IByte * 1000
MByte = KByte * 1000
GByte = MByte * 1000
TByte = GByte * 1000
PByte = TByte * 1000
EByte = PByte * 1000
)const (
IPv4Min = 0
IPv4Max = 1<<32 - 1
)const (
ChinaTimeZone = "UTC+8"
ChinaTimeOffset = 8 * 60 * 60
)const (
// PtrSize 4 on 32-bit systems, 8 on 64-bit.
PtrSize = 4 << (^uintptr(0) >> 63)
)var (
// BigByte is one byte in bit.Ints
BigByte = big.NewInt(1)
// BigKiByte is 1,024 bytes in bit.Ints
BigKiByte = (&big.Int{}).Mul(BigByte, bigIECExp)
// BigMiByte is 1,024 k bytes in bit.Ints
BigMiByte = (&big.Int{}).Mul(BigKiByte, bigIECExp)
// BigGiByte is 1,024 m bytes in bit.Ints
BigGiByte = (&big.Int{}).Mul(BigMiByte, bigIECExp)
// BigTiByte is 1,024 g bytes in bit.Ints
BigTiByte = (&big.Int{}).Mul(BigGiByte, bigIECExp)
// BigPiByte is 1,024 t bytes in bit.Ints
BigPiByte = (&big.Int{}).Mul(BigTiByte, bigIECExp)
// BigEiByte is 1,024 p bytes in bit.Ints
BigEiByte = (&big.Int{}).Mul(BigPiByte, bigIECExp)
// BigZiByte is 1,024 e bytes in bit.Ints
BigZiByte = (&big.Int{}).Mul(BigEiByte, bigIECExp)
// BigYiByte is 1,024 z bytes in bit.Ints
BigYiByte = (&big.Int{}).Mul(BigZiByte, bigIECExp)
)var (
// BigSIByte is one SI byte in big.Ints
BigSIByte = big.NewInt(1)
// BigKByte is 1,000 SI bytes in big.Ints
BigKByte = (&big.Int{}).Mul(BigSIByte, bigSIExp)
// BigMByte is 1,000 SI k bytes in big.Ints
BigMByte = (&big.Int{}).Mul(BigKByte, bigSIExp)
// BigGByte is 1,000 SI m bytes in big.Ints
BigGByte = (&big.Int{}).Mul(BigMByte, bigSIExp)
// BigTByte is 1,000 SI g bytes in big.Ints
BigTByte = (&big.Int{}).Mul(BigGByte, bigSIExp)
// BigPByte is 1,000 SI t bytes in big.Ints
BigPByte = (&big.Int{}).Mul(BigTByte, bigSIExp)
// BigEByte is 1,000 SI p bytes in big.Ints
BigEByte = (&big.Int{}).Mul(BigPByte, bigSIExp)
// BigZByte is 1,000 SI e bytes in big.Ints
BigZByte = (&big.Int{}).Mul(BigEByte, bigSIExp)
// BigYByte is 1,000 SI z bytes in big.Ints
BigYByte = (&big.Int{}).Mul(BigZByte, bigSIExp)
)var (
// Rand goroutine-safe, use Rand.xxx instead of rand.xxx
Rand = NewRand()
Seed = FastRand()
)var ChinaTimeLocation = time.FixedZone(ChinaTimeZone, ChinaTimeOffset)var ErrInvalidHostPort = errors.New("invalid Host or Port")var StackTraceBufferSize = 4 << 10func B2S(b []byte) stringB2S converts byte slice to string without a memory allocation. Slower: unsafe.String(unsafe.SliceData(b), len(b)) strings.Clone(): unsafe.String(&b[0], len(b))
func B64Decode(s string) []byteB64Decode Base64 解码
func B64Encode(b []byte) stringB64Encode Base64 编码
func B64UrlDecode(s string) []byteB64UrlDecode Base64 解码
func B64UrlEncode(b []byte) stringB64UrlEncode Base64 解码, 安全 URL, 替换: "+/" 为 "-_"
func BeginOfDay(t time.Time) time.TimeBeginOfDay 当天 0 点
func BeginOfHour(t time.Time) time.TimeBeginOfHour 0 分
func BeginOfLastMonth(t time.Time) time.TimeBeginOfLastMonth 上月第一天 0 点
func BeginOfLastWeek(t time.Time) time.TimeBeginOfLastWeek 上周一 0 点
func BeginOfMinute(t time.Time) time.TimeBeginOfMinute 0 秒
func BeginOfMonth(t time.Time) time.TimeBeginOfMonth 当月第一天 0 点
func BeginOfNextMonth(t time.Time) time.TimeBeginOfNextMonth 下月第一天 0 点
func BeginOfNextWeek(t time.Time) time.TimeBeginOfNextWeek 下周一 0 点
func BeginOfSecond(t time.Time) time.TimeBeginOfSecond 0 毫秒
func BeginOfTomorrow(t time.Time) time.TimeBeginOfTomorrow 明天 0 点
func BeginOfWeek(t time.Time) time.TimeBeginOfWeek 本周一 0 点
func BeginOfYear(t time.Time) time.TimeBeginOfYear 本年第一天 0 点
func BeginOfYesterday(t time.Time) time.TimeBeginOfYesterday 昨天 0 点
func BigComma(b *big.Int) stringBigComma big.Int 千分位分隔字符串 Ref: dustin/go-humanize
func BigCommaf(v *big.Float) stringBigCommaf big.Float 千分位分隔字符串 Ref: dustin/go-humanize
func Bigoom(n, b *big.Int) (float64, int)Bigoom big.Int 总数量级 Ref: dustin/go-humanize
func CPUTicks() int64CPUTicks CPU 时钟周期, 更高精度 (云服务器做伪随机数种子时慎用)
func CallPath() stringCallPath 运行时路径, 编译目录 假如: mklink E:\tmp\linkapp.exe D:\Fufu\Test\abc\app.exe 执行: E:\tmp\linkapp.exe CallPath: E:\Go\src\github.com\fufuok\utils\tmp\osext
func CheckDomain(name string) errorCheckDomain returns an error if the host name is not valid. See https://tools.ietf.org/html/rfc1034#section-3.5 and https://tools.ietf.org/html/rfc1123#section-2. Ref: chmike/domain
func Comma(v int64) stringComma 整数转千分位分隔字符串 Ref: dustin/go-humanize e.g. Comma(834142) -> 834,142
func Commaf(v float64) stringCommaf 浮点数转千分位分隔字符串 Ref: dustin/go-humanize e.g. Commaf(834142.32) -> 834,142.32
func Commai(v int) stringCommai 整数转千分位分隔字符串
func Commau(v uint64) stringCommau 整数转千分位分隔字符串 Ref: dustin/go-humanize
func CopyB2S(b []byte) stringCopyB2S Immutable, []byte to string string(b)
func CopyBytes(b []byte) []byteCopyBytes Immutable, []byte to []byte
func CopyS2B(s string) []byteCopyS2B Immutable, string to []byte []byte(s)
func CopyString(s string) stringCopyString Immutable, string to string e.g. fiberParam := utils.CopyString(c.Params("test")) e.g. utils.CopyString(s[500:1000]) // 可以让 s 被 GC 回收 strings.Clone(s) // go1.18
func CutBytes(s, sep []byte) (before, after []byte, found bool)CutBytes slices s around the first instance of sep, returning the text before and after sep. The found result reports whether sep appears in s. If sep does not appear in s, cut returns s, nil, false.
Cut returns slices of the original slice s, not copies. Ref: go1.18
func CutString(s, sep string) (before, after string, found bool)CutString xslices s around the first instance of sep, returning the text before and after sep. The found result reports whether sep appears in s. If sep does not appear in s, cut returns s, "", false. Ref: go1.18
func DaysInMonth(year int, m time.Month) intDaysInMonth 返回月份天数
func DaysInYear(year int) intDaysInYear 返回年份天数
func EncodeUUID(id []byte) []byteEncodeUUID 编码 UUID
func EndOfDay(t time.Time) time.TimeEndOfDay 当天最后时刻
func EndOfHour(t time.Time) time.TimeEndOfHour 最后一分
func EndOfLastMonth(t time.Time) time.TimeEndOfLastMonth 上月最后一刻
func EndOfLastWeek(t time.Time) time.TimeEndOfLastWeek 上周一最后一刻
func EndOfMinute(t time.Time) time.TimeEndOfMinute 最后一秒
func EndOfMonth(t time.Time) time.TimeEndOfMonth 当月最后一刻
func EndOfNextMonth(t time.Time) time.TimeEndOfNextMonth 下月最后一刻
func EndOfNextWeek(t time.Time) time.TimeEndOfNextWeek 下周一最后一刻
func EndOfSecond(t time.Time) time.TimeEndOfSecond 最后一毫秒
func EndOfTomorrow(t time.Time) time.TimeEndOfTomorrow 明天 0 点
func EndOfWeek(t time.Time) time.TimeEndOfWeek 本周末最后一刻
func EndOfYear(t time.Time) time.TimeEndOfYear 本年最后一刻
func EndOfYesterday(t time.Time) time.TimeEndOfYesterday 昨天最后时刻
func EqualFold(b, s string) boolEqualFold tests ascii strings for equality case-insensitively Ref: fiber
func EqualFoldBytes(b, s []byte) boolEqualFoldBytes tests ascii slices for equality case-insensitively Ref: fiber
func Executable(evalSymlinks ...bool) stringExecutable 当前执行程序绝对路径 true 时返回解析符号链接后的绝对路径 Excutable: E:\tmp\linkapp.exe Excutable(true): D:\Fufu\Test\abc\app.exe
func ExecutableDir(evalSymlinks ...bool) stringExecutableDir 当前执行程序所在目录 true 时返回解析符号链接后的目录 ExcutableDir: E:\tmp ExcutableDir(true): D:\Fufu\Test\abc
func FastIntn(n int) intFastIntn this is similar to rand.Intn, but faster. A non-negative pseudo-random number in the half-open interval [0,n). Return 0 if n <= 0.
func FastRand() uint32FastRand 随机数
func FastRand64() uint64func FastRandn(n uint32) uint32FastRandn 等同于 FastRand() % n, 但更快 See https://lemire.me/blog/2016/06/27/a-fast-alternative-to-the-modulo-reduction/
func FastRandu() uintfunc FirstString(s, sep string, defaultStr ...string) stringFirstString 获取文本内容第一个分隔符(单字节: sep[0])前的内容
func GetBytes(v interface{}, defaultVal ...[]byte) []byteGetBytes 先转为字符串再转为 []byte, 可选指定默认值
func GetDomain(name string) stringGetDomain 检查并返回清除前后空白的域名
func GetIPPort(addr net.Addr) (ip net.IP, port int, err error)GetIPPort 返回 IP 和 端口
func GetInt(v interface{}, defaultInt ...int) intGetInt 获取 int 结果, 可选指定默认值(若给定了默认值,则返回正整数或 0)
func GetMonthDays(t time.Time) intGetMonthDays 当月天数
func GetNotInternalIPv4(ip, defaultIP net.IP, flag ...bool) net.IPGetNotInternalIPv4 如果是内网 IPv4 则使用默认值, flag 为真是必定返回一个 IP
func GetNotInternalIPv4String(ip, defaultIP string, flag ...bool) stringGetNotInternalIPv4String 如果是内网 IPv4 则使用默认值
func GetSafeB2S(b []byte, defaultVal ...string) stringGetSafeB2S Immutable, 可选指定默认值
func GetSafeBytes(b []byte, defaultVal ...[]byte) []byteGetSafeBytes Immutable, 可选指定默认值
func GetSafeS2B(s string, defaultVal ...[]byte) []byteGetSafeS2B Immutable, 可选指定默认值
func GetSafeString(s string, defaultVal ...string) stringGetSafeString Immutable, 可选指定默认值
func GetString(v interface{}, defaultVal ...string) stringGetString 获取字符串结果, 可选指定默认值
func GoroutineID() (uint64, error)GoroutineID 获取 Goroutine ID
func Gzip(data []byte) ([]byte, error)func GzipLevel(data []byte, level int) (dst []byte, err error)func HumanBaseBytes(v uint64, base float64, sizes []string) stringHumanBaseBytes 数字的数量级表示
func HumanBigBytes(s *big.Int) stringHumanBigBytes produces a human readable representation of an SI size.
See also: ParseHumanBigBytes.
HumanBigBytes(82854982) -> 83 MB
func HumanBigIBytes(s *big.Int) stringHumanBigIBytes produces a human readable representation of an IEC size.
See also: ParseHumanBigBytes.
HumanBigIBytes(82854982) -> 79 MiB
func HumanBigKbps(s *big.Int) stringHumanBigKbps 1 Kbps = 1000 bit, 传输速率(bit per second, 位每秒) e.g. HumanBigKbps(82854982) -> 83 Mbps
func HumanBytes(v uint64) stringHumanBytes 1 KB = 1000 B e.g. HumanBytes(82854982) -> 83 MB
func HumanGBMB(v uint64) stringHumanGBMB 转为 ** GB ** MB 1 GB = 1024 MB
func HumanIBytes(v uint64) stringHumanIBytes 1 KiB = 1024 B e.g. HumanIBytes(82854982) -> 79 MiB
func HumanIntBytes(v int) stringHumanIntBytes 1 KB = 1000 B
func HumanIntIBytes(v int) stringHumanIntIBytes 1 KiB = 1024 B
func HumanIntKbps(v int) stringHumanIntKbps 1 Kbps = 1000 bit
func HumanKbps(v uint64) stringHumanKbps 1 Kbps = 1000 bit, 传输速率(bit per second, 位每秒) e.g. HumanKbps(82854982) -> 83 Mbps
func ID() uint64ID 运行时自增 ID (每次程序启动从 1 开始)
func IPv42Long(ip net.IP) intIPv42Long IPv4 转数值
func IPv42LongLittle(ip net.IP) intIPv42LongLittle IPv4 转小端数值
func IPv4String2Long(ip string) intIPv4String2Long IPv4 字符串转数值
func IPv4String2LongLittle(ip string) intIPv4String2LongLittle IPv4 字符串转数值(小端)
func IPv62Int(ip net.IP) *big.IntIPv62Int IPv6 转数值
func IPv6String2Int(ip string) *big.IntIPv6String2Int IPv6 字符串转数值
func InIPNet(ip net.IP, ipNets map[*net.IPNet]struct{}) boolInIPNet 是否包含在指定 IPNet 列表中
func InIPNetString(ip string, ipNets map[*net.IPNet]struct{}) boolInIPNetString 是否包含在指定 IPNet 列表中
func InInts(slice []int, n int) boolInInts 检查整数是否存在于 slice
func InStrings(ss []string, s string) boolInStrings 检查字符串是否存在于 slice 用 slices.Contains 替代
func InitCSTLocation() (name string, loc *time.Location, cst *time.Location, ok bool)InitCSTLocation 初始化默认时区为中国东八区(GMT+8) 返回值: name: "Asia/Shanghai" 或本地时区名称 loc: 优先尝试解析中国时区, 失败(Windows)后使用本地时区(time.Local) cst: 强制偏移的中国时区, !!!注意: 无法使用 time.LoadLocation(cst.String()) 二次加载 ok: true 表示初始化中国时区成功, false 表示 local 不一定是中国时区 Deprecated: 对于 公元1年 这种极早日期, 某些系统的时区数据库可能使用当时的 本地平均时间(LMT), 结果: +08:05:43 而非标准 +08:00
func InitChinaLocation() *time.LocationInitChinaLocation 设置全局时区为中国东八区(GMT+8)
func InitLocation(name string) (*time.Location, bool)InitLocation 解析并初始化本地时区
func Int2IPv6(ipInt *big.Int) net.IPInt2IPv6 数值转 IPv4
func Int2IPv6String(n *big.Int) stringInt2IPv6String 数值转 IPv6 字符串
func IsIP(ip string) boolIsIP 判断是否为合法 IPv4 / IPv6
func IsIPv4(s string) boolIsIPv4 判断是否为合法 IPv4 IsIPv4 works the same way as net.ParseIP, but without check for IPv6 case and without returning net.IP slice, whereby IsIPv4 makes no allocations. Ref: gofiber/utils
func IsIPv6(s string) boolIsIPv6 判断是否为合法 IPv6 IsIPv6 works the same way as net.ParseIP, but without check for IPv4 case and without returning net.IP slice, whereby IsIPv6 makes no allocations. Ref: gofiber/utils
func IsInternalIPv4(ip net.IP) boolIsInternalIPv4 是否为内网 IPv4, 包含 NAT 专用网段 RFC6598, 比如华为云 ELB 的 100.125.0.0/16
func IsInternalIPv4String(ip string) boolIsInternalIPv4String 是否为内网 IPv4
func IsLeapYear(year int) boolIsLeapYear 判断是否为闰年
func IsLetter(s string) boolIsLetter 检查字符串是否全是 ASCII 字母
func IsLetterOrNumeric(s string) boolIsLetterOrNumeric 检查字符串是否全是 ASCII 字母或数字
func IsNumeric(s string) boolIsNumeric 检查字符串是否全是 ASCII 数字: 0-9
func IsPrivateIP(ip net.IP) boolIsPrivateIP reports whether ip is a private address, according to RFC 1918 (IPv4 addresses) and RFC 4193 (IPv6 addresses). Ref: go1.17+ func (ip IP) IsPrivate() bool
func IsPrivateIPString(ip string) boolIsPrivateIPString 是否为私有 IP
func JoinBytes(b ...[]byte) []byteJoinBytes 拼接 []byte
func JoinString(s ...string) stringJoinString 拼接字符串
func JoinStringBytes(s ...string) []byteJoinStringBytes 拼接字符串, 返回 bytes from bytes.Join()
func LastString(s, sep string, defaultStr ...string) stringLastString 获取文本内容最后一个分隔符(单字节: sep[0])后的内容
func LeftPad(s, pad string, n int) stringLeftPad 从左填充字符串到指定长度
func LeftPadBytes(b, pad []byte, n int) []byteLeftPadBytes 从左填充到指定长度
func Logn(n, b float64) float64func Long2IPv4(n int) net.IPLong2IPv4 数值转 IPv4
func Long2IPv4String(n int) stringLong2IPv4String 数值转 IPv4 字符串
func LongLittle2IPv4(n int) net.IPLongLittle2IPv4 小端数值转 IPv4
func LongLittle2IPv4String(n int) stringLongLittle2IPv4String 数值(小端)转 IPv4 字符串
func MaxInt(a, b int) intMaxInt 整数取大值
func MinInt(a, b int) intMinInt 整数取小值
func MustBool(v interface{}) boolMustBool 强制转为 bool
func MustInt(v interface{}) intMustInt 强制转为整数 (int)
func MustJSON(v interface{}) []byteMustJSON 转 json 返回 []byte
func MustJSONIndent(v interface{}) []byteMustJSONIndent 转 json 返回 []byte
func MustJSONIndentString(v interface{}) stringMustJSONIndentString 转 json Indent 返回 string
func MustJSONString(v interface{}) stringMustJSONString 转 json 返回 string
func MustParseHumanBigBytes(s string, defaultVal ...*big.Int) *big.IntMustParseHumanBigBytes 解析数字的数量级表示 e.g. MustParseHumanBigBytes("42 MB") -> 42000000 e.g. MustParseHumanBigBytes("-42 mib", 123) -> 123
func MustParseHumanBytes(s string, defaultVal ...uint64) uint64MustParseHumanBytes 解析数字的数量级表示 e.g. MustParseHumanBytes("42 MB") -> 42000000 e.g. MustParseHumanBytes("-42 mib", 123) -> 123
func MustString(v interface{}, timeLayout ...string) stringMustString 强制转为字符串
func NanoTime() int64NanoTime 返回当前时间 (以纳秒为单位)
func NewRand(seed ...int64) *rand.RandNewRand goroutine-safe rand.Rand, optional seed value
func NewSpinLock() sync.LockerNewSpinLock instantiates a spin-lock.
func Pad(s, pad string, n int) stringPad 填充字符串到指定长度, 同 Python3: 'str'.center()
func PadBytes(s, pad []byte, n int) []bytePadBytes 填充到指定长度
func ParseHostPort(s string) (net.IP, uint16, bool, error)ParseHostPort 解析 IP 和端口
func ParseHumanBigBytes(s string) (*big.Int, error)ParseHumanBigBytes parses a string representation of bytes into the number of bytes it represents.
See also: HumanBigBytes, HumanBigIBytes.
ParseHumanBigBytes("42 MB") -> 42000000, nil ParseHumanBigBytes("42 mib") -> 44040192, nil
func ParseHumanBytes(s string) (uint64, error)ParseHumanBytes 解析数字的数量级表示 e.g. ParseHumanBytes("42 MB") -> 42000000, nil e.g. ParseHumanBytes("42 mib") -> 44040192, nil
func ParseIP(s string) (net.IP, bool)ParseIP 解析 IP 并返回是否为 IPv6
func ParseIPv4(ip string) net.IPParseIPv4 判断是否为合法 IPv4 并解析
func ParseIPv6(ip string) net.IPParseIPv6 判断是否为合法 IPv6 并解析
func ParseIPx(s string) (net.IP, bool)ParseIPx 解析 IP, 并返回是否为 IPv6
func ParseIPxWithNumeric(s string) (net.IP, bool)ParseIPxWithNumeric 解析 IP, 支持数字形态, 并返回是否为 IPv6
func ParseInts(s string) ([]int, error)ParseInts 解析字符串, 得到去重并排序后的数字列表 "5,0-3, 3" => [0,1,2,3,5]
func RandAlphaBytes(n int) []byteRandAlphaBytes generates random alpha bytes.
func RandAlphaString(n int) stringRandAlphaString 指定长度的随机字母字符串
func RandBytes(n int) []byteRandBytes random bytes, but faster.
func RandBytesLetters(n int, letters string) []byteRandBytesLetters 生成指定长度的字符切片
func RandDecBytes(n int) []byteRandDecBytes 指定长度的随机数字切片
func RandDecString(n int) stringRandDecString 指定长度的随机数字字符串
func RandHexBytes(n int) []byteRandHexBytes generates random hexadecimal bytes.
func RandHexString(n int) stringRandHexString 指定长度的随机 hex 字符串
func RandInt(min, max int) intRandInt (>=)min - (<)max
func RandString(n int) stringRandString a random string, which may contain uppercase letters, lowercase letters and numbers. Ref: stackoverflow.icza
func RandUint32(min, max uint32) uint32RandUint32 (>=)min - (<)max
func Recover(cb ...RecoveryCallback)Recover 从 panic 中恢复并记录堆栈信息
func RemoveRunes(s string, toRemove string) stringRemoveRunes 清除字符串中的指定字符串的每个字符
func RemoveString(ss []string, s string) ([]string, bool)RemoveString 删除字符串元素
func ReplaceHost(a, b string) stringReplaceHost 返回 b 的主机名 + a 的端口 e.g. ReplaceHost("a.cn:77", "b.cn:88") == "b.cn:77"
func Reverse(s string) stringReverse 反转字符串
func RightPad(s, pad string, n int) stringRightPad 从右填充字符串到指定长度
func RightPadBytes(b, pad []byte, n int) []byteRightPadBytes 从右填充到指定长度
func Round(v float64, precision int) float64Round 四舍五入, ROUND_HALF_UP 模式实现 返回将 val 根据指定精度 precision (十进制小数点后数字的数目) 进行四舍五入的结果 precision 也可以是负数或零 Ref: thinkeridea/go-extend
func RunPath() stringRunPath 实际程序所在目录 RunPath: E:\tmp
func RuneReverse(s string) stringRuneReverse 反转多字节字符串
func RuneSubString(s string, length int, suffix string) stringRuneSubString 多字节字符串截取 长度支持 0(空字符串) / >0(正常截取) / <0(从结尾处往前截取) 长度等于或超过字符串长度, 返回原字符串值, 此时忽略 suffix 参数
func S2B(s string) []byteS2B converts string to byte slice without a memory allocation. Ref: golang/go#53003 (comment)
func SafeGo(fn func(), cb ...RecoveryCallback)SafeGo 带 Recover 的 goroutine 运行
func SafeGoCommonFunc(args interface{}, fn func(args interface{}), cb ...RecoveryCallback)SafeGoCommonFunc 带 Recover 的 goroutine 运行
func SafeGoWithContext(ctx context.Context, fn func(ctx context.Context), cb ...RecoveryCallback)SafeGoWithContext 带 Recover 的 goroutine 运行
func SearchInt(slice []int, n int) intSearchInt 搜索整数位置(左, 第一个)
func SearchString(ss []string, s string) intSearchString 搜索字符串位置(左, 第一个) 用 slices.Index 替代
func Sleep(ctx context.Context, interval time.Duration) errorSleep 支持上下文中断的 time.Sleep
func SplitHostPort(hostPort string) (host, port string)SplitHostPort separates host and port. If the port is not valid, it returns the entire input as host, and it doesn't check the validity of the host. Unlike net.SplitHostPort, but per RFC 3986, it requires ports to be numeric.
func SumInt(v ...int) intSumInt 整数和
func ToLower(b string) stringToLower converts ascii string to lower-case Ref: fiber
func ToLowerBytes(b []byte) []byteToLowerBytes converts ascii slice to lower-case Ref: fiber
func ToUpper(b string) stringToUpper converts ascii string to upper-case Ref: fiber
func ToUpperBytes(b []byte) []byteToUpperBytes converts ascii slice to upper-case Ref: fiber
func Trim(s string, cutset byte) stringTrim is the equivalent of strings.Trim Ref: fiber
func TrimBytes(b []byte, cutset byte) []byteTrimBytes is the equivalent of bytes.Trim Ref: fiber
func TrimLeft(s string, cutset byte) stringTrimLeft is the equivalent of strings.TrimLeft Ref: fiber
func TrimLeftBytes(b []byte, cutset byte) []byteTrimLeftBytes is the equivalent of bytes.TrimLeft Ref: fiber
func TrimRight(s string, cutset byte) stringTrimRight is the equivalent of strings.TrimRight Ref: fiber
func TrimRightBytes(b []byte, cutset byte) []byteTrimRightBytes is the equivalent of bytes.TrimRight Ref: fiber
func TrimSlice(ss []string) []stringTrimSlice 清除 slice 中各元素的空白, 并删除空白项 注意: 原切片将被修改
func TruncStr(s string, maxLen int, suffix string) stringTruncStr 截断字符串
func UUID() []byteUUID 随机 UUID, RFC4122, Version 4
func UUIDShort() stringUUIDShort 随机 UUID, 短版, base58
func UUIDSimple() stringUUIDSimple 随机 UUID, 无短横线
func UUIDString() stringUUIDString 随机 UUID
func Ungzip(data []byte) (src []byte, err error)func Unzip(data []byte) (src []byte, err error)func ValidOptionalPort(port string) boolValidOptionalPort reports whether port is either an empty string or matches /^:\d*$/
func WaitNextMinute(t ...time.Time)WaitNextMinute 下一分钟, 对齐时间, 0 秒
func WaitNextMinuteWithTime(t ...time.Time) (now time.Time)WaitNextMinuteWithTime 下一分钟, 对齐时间, 0 秒
func WaitNextSecond(t ...time.Time)WaitNextSecond 下一秒, 对齐时间, 0 毫秒 (近似)
func WaitNextSecondWithTime(t ...time.Time) (now time.Time)WaitNextSecondWithTime 下一秒, 对齐时间, 0 毫秒 (近似)
func WaitSignal(sig ...os.Signal) os.SignalWaitSignal 等待系统信号 默认捕获退出类信息
func WaitUntilMinute(m int, t ...time.Time)WaitUntilMinute 等待, 直到 m 分钟
func WaitUntilSecond(s int, t ...time.Time)WaitUntilSecond 等待, 直到 s 秒
func Zip(data []byte) ([]byte, error)func ZipLevel(data []byte, level int) (dst []byte, err error)A Bool is an atomic boolean value. The zero value is false.
type Bool struct {
// contains filtered or unexported fields
}func NewBool(val bool) *Boolfunc NewFalse() *Boolfunc NewTrue() *Boolfunc (x *Bool) CAS(old, new bool) boolfunc (x *Bool) CompareAndSwap(old, new bool) (swapped bool)CompareAndSwap executes the compare-and-swap operation for the boolean value x.
func (x *Bool) Load() boolLoad atomically loads and returns the value stored in x.
func (x *Bool) MarshalJSON() ([]byte, error)func (x *Bool) Store(val bool)Store atomically stores val into x.
func (x *Bool) StoreFalse()func (x *Bool) StoreTrue()func (x *Bool) String() stringfunc (x *Bool) Swap(new bool) (old bool)Swap atomically stores new into x and returns the previous value.
func (x *Bool) Toggle() (old bool)Toggle atomically negates the Boolean and returns the previous value
func (x *Bool) UnmarshalJSON(b []byte) errorNoCmp is an uncomparable struct. Embed this inside another struct to make it uncomparable.
type Foo struct {
NoCmp
// ...
}
This DOES NOT:
- Disallow shallow copies of structs
- Disallow comparison of pointers to uncomparable structs
type NoCmp [0]func()NoCopy may be added to structs which must not be copied after the first use.
See golang/go#8005 (comment) for details. and also: https://stackoverflow.com/questions/52494458/nocopy-minimal-example
Note that it must not be embedded, due to the Lock and Unlock methods.
type NoCopy struct{} //nolint:unusedfunc (*NoCopy) Lock()Lock is a no-op used by -copylocks checker from `go vet`.
func (*NoCopy) Unlock()RecoveryCallback 自定义恢复信息回调
type RecoveryCallback func(err interface{}, trace []byte)type TryMutex struct {
// contains filtered or unexported fields
}func NewTryMutex() *TryMutexfunc (m *TryMutex) Lock()func (m *TryMutex) TryLock(timeout ...time.Duration) boolTryLock 实现可选等待时间尝试获取锁
func (m *TryMutex) Unlock()Generated by gomarkdoc