package
1.1.11
Repository: https://github.com/github121380/golib.git
Documentation: pkg.go.dev

# Packages

No description provided by the author

# Functions

BothPad 使用另一个字符串从两端填充字符串为指定长度, 如果补充长度是奇数,右边的字符会更多一些。.
Join 使用 sep 连接 a 的字符串。 该方法是对标准库 strings.Join 修改,配合 unsafe 包能有效减少内存分配。.
JoinInt16s 使用 sep 连接 []int16 并返回连接的字符串.
JoinInt32s 使用 sep 连接 []int32 并返回连接的字符串.
JoinInt64s 使用 sep 连接 []int64 并返回连接的字符串.
JoinInt8s 使用 sep 连接 []int8 并返回连接的字符串.
JoinInts 使用 sep 连接 []int 并返回连接的字符串.
JoinToBytes 使用 sep 连接 a 的字符串并返回 []byte 该方法是对标准库 strings.Join 修改,配合 unsafe 包能有效减少内存分配。.
JoinUint16s 使用 sep 连接 []uint16 并返回连接的字符串.
JoinUint32s 使用 sep 连接 []uint32 并返回连接的字符串.
JoinUint64s 使用 sep 连接 []uint64 并返回连接的字符串.
JoinUint8s 使用 sep 连接 []uint8 并返回连接的字符串.
JoinUints 使用 sep 连接 []uint 并返回连接的字符串.
LeftPad 使用另一个字符串从左端填充字符串为指定长度。.
字符串buffer拼接,避免循环中使用次方法.
Pad 使用另一个字符串填充字符串为指定长度。 该函数返回 s 被从左端、右端或者同时两端被填充到制定长度后的结果。 填充方向由 falg 控制,可选值:PadLeft、PadBoth、PadRight。 在两边填充字符串为指定长度,如果补充长度是奇数,右边的字符会更多一些。 */.
Repeat 返回由字符串s的计数副本组成的新字符串。 该方法是对标准库 strings.Repeat 修改,对于创建大字符串能有效减少内存分配。 如果计数为负或 len(s) * count 溢出将触发panic。 */.
RepeatToBytes 返回由字符串s的计数副本组成的 []byte。 该方法是对标准库 strings.Repeat 修改,对于创建大字符串能有效减少内存分配。 如果计数为负或 len(s) * count 溢出将触发panic。 */.
Replace 替换字符串 该方法是对标准库 strings.Replace 修改,配合 unsafe 包能有效减少内存分配。.
ReplaceToBytes 替换字符串,并返回 []byte,减少类型转换 如果在字符串串中找不到子串,会发生内存拷贝 这个方法返回的 []byte 是安全,可以进行修改.
Reverse 反转字符串,通过 https://golang.org/doc/code.html#Library 收集.
RightPad 使用另一个字符串从右端填充字符串为指定长度。.
UnsafeBothPad 使用另一个字符串从两端填充字符串为指定长度, 如果补充长度是奇数,右边的字符会更多一些。 该函数使用 unsafe 包转换数据类型,降低内存分配。 Deprecated: 不在使用 Unsafe 前缀.
UnsafeJoin 使用 sep 连接 a 的字符串。 该方法是对标准库 strings.Join 修改,配合 unsafe 包能有效减少内存分配。 Deprecated: 不再使用 Unsafe 前缀,保持与标准库相同的命名.
UnsafeLeftPad 使用另一个字符串从左端填充字符串为指定长度。 该函数使用 unsafe 包转换数据类型,降低内存分配。 Deprecated: 不再使用 Unsafe 前缀.
UnsafePad 使用另一个字符串填充字符串为指定长度。 该函数使用 unsafe 包转换数据类型,降低内存分配。 该函数返回 s 被从左端、右端或者同时两端被填充到制定长度后的结果。 填充方向由 falg 控制,可选值:PadLeft、PadBoth、PadRight。 在两边填充字符串为指定长度,如果补充长度是奇数,右边的字符会更多一些。 Deprecated: 不在使用 Unsafe 前缀 */.
UnsafeRepeat 返回由字符串s的计数副本组成的新字符串。 该方法是对标准库 strings.Repeat 修改,对于创建大字符串能有效减少内存分配。 如果计数为负或 len(s) * count 溢出将触发panic。 与标准库的性能差异(接近标准库性能的两倍): BenchmarkUnsafeRepeat-8 50000 28003 ns/op 303104 B/op 1 allocs/op BenchmarkStandardLibraryRepeat-8 30000 50619 ns/op 606208 B/op 2 allocs/op Deprecated: 不在使用 Unsafe 前缀,保持与标准库相同的命名 */.
UnsafeReplace 替换字符串 该方法是对标准库 strings.Replace 修改,配合 unsafe 包能有效减少内存分配。 Deprecated: 不再使用 Unsafe 前缀,保持与标准库相同的命名.
UnsafeReplaceToBytes 替换字符串,并返回 []byte,减少类型转换 如果输入是字面量字符串,返回结果不可以修改.
UnsafeRightPad 使用另一个字符串从右端填充字符串为指定长度。 该函数使用 unsafe 包转换数据类型,降低内存分配。 Deprecated: 不再使用 Unsafe 前缀.
UnsafeToBytes 把 string 转换为 []byte 没有多余的内存开销。 这个函数可以提升 string 转 []byte 的性能,并极大的降低内存开销,但是却相当的危险,对于不明确这个函数的人来说不建议使用该函数。 这个函数是 exbytes.ToString 反向操作版,但是不像 exbytes.ToString 那么的稳定安全,该函数使用不当会导致程序直接崩溃,且无法恢复。 s := `{"k":"v"}` b := exstrings.UnsafeToBytes(s) // b[3] = 'k' // unexpected fault address 0x1118180 data := map[string]string{} err := json.Unmarshal(b, &data) fmt.Println(data, err) 这是一个使用的例子,如果我们需要转换一个字符串很方便,且开销非常的低。 但是一定要注意,b[3] = 'k' 如果尝试修改获得的 []byte 将直接导致程序崩溃,并且不可能通过 recover() 恢复。 实际上我们可以突破这个限制,这就要了解字符串的一些规则,下面的例子可以完美运行,并修改字符串: s := strings.Repeat("A", 3) b := exstrings.UnsafeToBytes(s) b[1] = 'B' b[2] = 'C' fmt.Println(s, string(b)) 非常完美,s和b变量的值都是 ABC, 为什么会这样呢? 这个就是 string 的内存分配方法, 字面量使用这种方式是没有办法修改的,因为这是在编译时就决定的,编译时会设定字符串的内存数据是只读数据。 如果程序运行时生成的数据,这种数据是可以安全使用该函数的,但是要当心你的字符串可能会被修改, 比如我们调用 json.Unmarshal(exstrings.UnsafeToBytes(s), &data), 如果 json 包里面出现修改输入参数,那么原来的字符串就可能不是你想想的那样。 使用该函数要明确两个事情: - 确定字符串是否是字面量,或者内存被分配在只读空间上。 - 确保访问该函数结果的函数是否会按照你的意愿访问或修改数据。 我公开该函数经过很多思考,虽然它很危险,但是有时间却很有用,如果我们需要大批量转换字符串的大小写,而且不再需要原字符串,我们可以原地安全的修改字符串。 当然还有更多的使用方法,可以极大的提升我们程序的性能。 */.

# Constants

PadBoth 在两边填充字符串为指定长度,如果补充长度是奇数,右边的字符会更多一些。.
PadLeft 在左侧填充字符串为指定长度。.
PadRight 在右侧填充字符串为指定长度。.