values

package
v1.2.14 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 12, 2024 License: MIT Imports: 7 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BuildStrings added in v1.2.6

func BuildStrings(parts ...string) string

BuildStrings 构建字符串,使用strings.Builder example:

BuildStrings("a", "b", "c") -> "abc"

func BuildStringsWithJoin added in v1.2.10

func BuildStringsWithJoin(sep string, parts ...string) string

BuildStringsWithJoin 构建字符串,使用strings.Join example:

BuildStringsWithJoin("/", "a", "b", "c") -> "a/b/c"

func BuildStringsWithJoinIgnoreEmpty added in v1.2.10

func BuildStringsWithJoinIgnoreEmpty(sep string, parts ...string) string

BuildStringsWithJoinIgnoreEmpty use strings.Join to build string, all empty string in parts will be ignored example:

BuildStringsWithJoinIgnoreEmpty("/", "a", "", "b", "c", "") -> "a/b/c"

func BuildStringsWithReplacement added in v1.2.6

func BuildStringsWithReplacement(replacement map[string]string, parts ...string) string

BuildStringsWithReplacement 构建字符串,使用strings.Builder,同时替换字符串 example:

BuildStringsWithReplacement(map[string]string{"a": "1", "b": "2", "c": "3"}, "a", "b", "c") -> "123"

func BuildStringsWithTemplate added in v1.2.6

func BuildStringsWithTemplate(template string, args ...string) string

BuildStringsWithTemplate 构建字符串并替换模板,使用strings.ReplaceAll example:

BuildStringsWithTemplate("a{1}b{2}c{3}", "1", "2", "3") -> "a1b2c3"

func CheckStruct added in v1.2.12

func CheckStruct(structure any, tag ...string) string

func ContainsArray added in v1.2.13

func ContainsArray[T comparable](array []T, target T) bool

ContainsArray checks if the target is in the array.

example:

ContainsArray([]int{1, 2, 3}, 2) => true
ContainsArray([]string{"a", "b", "c"}, "d") => false

func ConvertStructToStringMap added in v1.2.12

func ConvertStructToStringMap(val any, keyPrefix ...string) map[string]string

ConvertStructToStringMap 函数将结构体转换为map[string]string,为了template使用

  • val: 结构体,需要指定cpc tag
  • keyPrefix: key的前缀,选填

example:

type User struct {
	Name string `cpc:"key:name"`
	Age  int    `cpc:"key:age,omitempty"`
	Male bool   `cpc:"key:male,default:true"`
}
user := &User{
	Name: "test",
	Age:  0,
}
result := ConvertStructToStringMap(user) // map[male:true name:test]

func FilterArray added in v1.2.14

func FilterArray[T any](array []T, filter func(T) bool) []T

FilterArray filters the array with the filter function.

example:

FilterArray([]int{1, 2, 3}, func(i int) bool { return i > 1 }) => []int{2, 3}
FilterArray([]string{"a", "b", "c"}, func(s string) bool { return s != "a" }) => []string{"b", "c"}

func Float32ToString added in v1.2.9

func Float32ToString[T ~float32](raw T) string

func Float64ToString added in v1.2.9

func Float64ToString[T ~float64](raw T) string

func IndexArray added in v1.2.13

func IndexArray[T comparable](array []T, target T) int

IndexArray returns the index of the target in the array.

example:

IndexArray([]int{1, 2, 3}, 2) => 1
IndexArray([]string{"a", "b", "c"}, "d") => -1

func Int64ToString added in v1.2.9

func Int64ToString[T ~int64](raw T) string

func IntToString added in v1.2.9

func IntToString[T ~int](raw T) string

func MergeArrays added in v1.2.13

func MergeArrays[T any](arrays ...[]T) []T

MergeArrays concatenates the arrays.

example:

MergeArrays([]int{1, 2}, []int{3, 4}) => []int{1, 2, 3, 4}
MergeArrays([]string{"a", "b"}, []string{"c", "d"}) => []string{"a", "b", "c", "d"}

func Nil

func Nil[T any]() T

func NilFunction

func NilFunction[T any]() func() T

func NumberOrStringValueGetFloat added in v1.2.6

func NumberOrStringValueGetFloat(value any) float64

func NumberOrStringValueGetInt added in v1.2.6

func NumberOrStringValueGetInt(value any) int

func NumberOrStringValueGetString added in v1.2.6

func NumberOrStringValueGetString(value any) string

func Ptr added in v1.2.14

func Ptr[T any](val T) *T

func RemoveArray added in v1.2.13

func RemoveArray[T comparable](array []T, start, end int) []T

RemoveArray removes the elements from the array from [start, end).

example:

RemoveArray([]int{1, 2, 3}, 1, 2) => []int{1}
RemoveArray([]string{"a", "b", "c"}, 0, 1) => []string{"c"}

func ReverseArray added in v1.2.9

func ReverseArray[T any](array []T) []T

ReverseArray reverses the array. The original array will not be modified.

example:

ReverseArray([]int{1, 2, 3}) => []int{3, 2, 1}
ReverseArray([]string{"a", "b", "c"}) => []string{"c", "b", "a"}

func ShuffleArray added in v1.2.13

func ShuffleArray[T any](array []T, start, end int) []T

ShuffleArray shuffles the array from [start, end).

example:

ShuffleArray([]int{1, 2, 3}, 0, 3) => []int{3, 1, 2}
ShuffleArray([]string{"a", "b", "c"}, 0, 3) => []string{"c", "a", "b"}

func SortArray added in v1.2.14

func SortArray[T any](array []T, cmp func(T, T) bool) []T

SortArray sorts the array with the compare function. The original array will not be modified.

example:

SortArray([]int{3, 1, 2}, func(i, j int) bool { return i < j }) => []int{1, 2, 3}
SortArray([]string{"c", "a", "b"}, func(i, j string) bool { return i < j }) => []string{"a", "b", "c"}

func StringToBool added in v1.2.9

func StringToBool[T ~bool](raw string, defaultValue T) T

StringToBool 字符串转换为bool example:

StringToBool("true", false) -> true

func StringToBoolPtr added in v1.2.9

func StringToBoolPtr[T ~bool](raw string) *T

StringToBoolPtr 字符串转换为*bool example:

StringToBoolPtr("true") -> true

func StringToFloat64 added in v1.2.9

func StringToFloat64[T ~float64](raw string, defaultValue T) T

StringToFloat64 字符串转换为float64 example:

StringToFloat64("1.0", 0) -> 1.0

func StringToFloat64Ptr added in v1.2.9

func StringToFloat64Ptr[T ~float64](raw string) *T

StringToFloat64Ptr 字符串转换为*float64 example:

StringToFloat64Ptr("1.0") -> 1.0

func StringToInt added in v1.2.9

func StringToInt[T ~int](raw string, defaultValue T) T

StringToInt 字符串转换为int example:

StringToInt("1", 0) -> 1

func StringToIntPtr added in v1.2.9

func StringToIntPtr[T ~int](raw string) *T

StringToIntPtr 字符串转换为*int example:

StringToIntPtr("1") -> 1

func StringToStringPtr added in v1.2.9

func StringToStringPtr[T ~string](raw string) *T

StringToStringPtr 字符串转换为*string example:

StringToStringPtr("test") -> "test"

func StringToUint added in v1.2.9

func StringToUint[T ~uint](raw string, defaultValue T) T

StringToUint 字符串转换为uint example:

StringToUint("1", 0) -> 1

func StringToUintPtr added in v1.2.9

func StringToUintPtr[T ~uint](raw string) *T

StringToUintPtr 字符串转换为*uint example:

StringToUintPtr("1") -> 1

func Uint64ToString added in v1.2.9

func Uint64ToString[T ~uint64](raw T) string

func UintToString added in v1.2.9

func UintToString[T ~uint](raw T) string

func UniqueArray added in v1.2.13

func UniqueArray[T comparable](array []T) []T

UniqueArray returns a new array with unique elements.

example:

UniqueArray([]int{1, 2, 2, 3}) => []int{1, 2, 3}
UniqueArray([]string{"a", "b", "b", "c"}) => []string{"a", "b", "c"}

func UnsafeBytesToString added in v1.2.12

func UnsafeBytesToString(b []byte) string

UnsafeBytesToString converts a byte slice to a string without copying the data. before you use this function, you should know what you are doing.

func UnsafeStringToBytes added in v1.2.12

func UnsafeStringToBytes(s string) []byte

UnsafeStringToBytes converts a string to a byte slice without memory allocation. before you use this function, you should know what you are doing.

Types

type RawSqlTemplate added in v1.2.12

type RawSqlTemplate struct {
	*StringTemplate
}

func NewRawSqlTemplate added in v1.2.12

func NewRawSqlTemplate(template string, arguments any) *RawSqlTemplate

NewRawSqlTemplate 创建一个字符串模板,使用支持的内容作为参数,支持的内容有:结构体(指针),map[string]string,*map[string]string

  • template: 模板字符串
  • args: 参数,如果是结构体(指针),需要指定cpc tag,并且目前只支持uint, int, float, string, bool和嵌套结构体类型的成员字段

example:

type User struct {
	Name string `cpc:"key:name"`
	Age  int    `cpc:"key:age,default:18"`
}
user := &User{
	Name: "'; DROP TABLE users WHERE 1=1 --",
}
template := "SELECT * FROM user WHERE name = '${name}' AND age = ${age}"
result := NewRawSqlTemplate(template, user).Parse()

then

SELECT * FROM user WHERE name = '\'; DROP TABLE users WHERE 1=1 --' AND age = 18

func NewRawSqlTemplateWithMap added in v1.2.12

func NewRawSqlTemplateWithMap(template string, arguments map[string]string) *RawSqlTemplate

NewRawSqlTemplateWithMap 创建一个字符串模板,使用map[string]string作为参数,并且模板中的参数会被转义

  • template: 模板字符串
  • arguments: 参数

example:

template := "SELECT * FROM user WHERE name = '${name}'"
arguments := map[string]string{
	"name": "test",
}
result := NewRawSqlTemplateWithMap(template, arguments).Parse()
fmt.Println(result) // SELECT * FROM user WHERE name = 'test'

type StringTemplate added in v1.2.12

type StringTemplate struct {
	// contains filtered or unexported fields
}

func NewStringTemplate added in v1.2.12

func NewStringTemplate(template string, args any) *StringTemplate

NewStringTemplate 创建一个字符串模板,使用支持的内容作为参数,支持的内容有:结构体(指针),map[string]string,*map[string]string

  • template: 模板字符串
  • args: 参数,如果是结构体(指针),需要指定cpc tag,并且目前只支持uint, int, float, string, bool和嵌套结构体类型的成员字段

example:

type User struct {
	Name string `cpc:"key:name"`
	Age  int    `cpc:"key:age,omitempty"`
	Male bool   `cpc:"key:male,default:true"`
}
user := &User{
	Name: "test",
	Age:  0,
}
template := "name: ${name}, age: ${age}, male: ${male}"
result := NewStringTemplate(template, user).Parse()
fmt.Println(result) // name: test, age: ${age}, male: true

func NewStringTemplateWithCustomSignals added in v1.2.12

func NewStringTemplateWithCustomSignals(template string, arguments map[string]string, startSignals, endSignals string) *StringTemplate

NewStringTemplateWithCustomSignals 创建一个字符串模板,使用map[string]string作为参数,并且可以自定义模板开始和结束符号

  • template: 模板字符串
  • arguments: 参数
  • startSignals: 模板开始符号,长度必须和endSignals一样
  • endSignals: 模板结束符号,长度必须和startSignals一样

example:

template := "name: $@name@, age: $@age@"
arguments := map[string]string{
	"name": "test",
	"age":  "18",
}
result := NewStringTemplateWithCustomSignals(template, arguments, "@", "@").Parse()
fmt.Println(result) // name: test, age: 18

func NewStringTemplateWithMap added in v1.2.12

func NewStringTemplateWithMap(template string, arguments map[string]string) *StringTemplate

NewStringTemplateWithMap 创建一个字符串模板,使用map[string]string作为参数

  • template: 模板字符串
  • arguments: 参数

example:

template := "name: ${name}, age: ${age}"
arguments := map[string]string{
	"name": "test",
	"age":  "18",
}
result := NewStringTemplateWithMap(template, arguments).Parse()
fmt.Println(result) // name: test, age: 18

func (*StringTemplate) Parse added in v1.2.12

func (t *StringTemplate) Parse() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL