CEL
Functions
Standard functions included in the Twisp CEL runtime.
CEL provides function invocation within expressions to perform operations and computations. Twisp includes a number of predefined extensions to the CEL runtime environment for computation within ledger transactions.
Packages
The included package functions are:
- Strongly-typed: The function signatures of a package require that the arguments provided have the expected types.
- Side-effect-free: Package functions only calculate an output based on the inputs given.
The Twisp CEL runtime has been extended with the following packages and their respective function signatures.
cal
func cal.Quarter(ts &{types Timestamp}, fiscalStartMonth int) int
Quarter returns the quarter based on the fiscalStartMonth:
fiscalStartMonth: 1 (time.January) standard fiscalStartMonth: 10 (time.October) US Government
func cal.WeekOfYear(ts &{types Timestamp}, dow int, doy int) YearWeek
WeekOfYear returns the week of year given:
- dow day of week that starts the week (Sunday:0 - Saturday: 6)
- doy first January day that must appear in week 1.
Common Settings: USA: dow 0 doy 1 (First January 1st in year) ISO: dow 1 doy 4 (First Thursday of year equivalent to first Jan 4 in year)
func cal.ISOWeekOfYear(ts &{types Timestamp}) YearWeek
ISOWeekOfYear returns the ISO year and week of the timestamp. See https://en.wikipedia.org/wiki/ISO_8601#Week_dates
decimal
func decimal.Abs(x decimal) decimal, error
Abs calculates |x| (the absolute value of x).
func decimal.Add(x decimal, y decimal) decimal, error
Add calculates the sum of x+y.
func decimal.Cbrt(x decimal) decimal, error
Cbrt calculates the cube root of x.
func decimal.Ceil(x decimal) decimal, error
Ceil calculates smallest integer >= x.
func decimal.Cmp(x decimal, y decimal) decimal, error
Cmp compares x and y and calculates:
-1 if x < y
0 if x == y
+1 if x > y
This comparison respects the normal rules of special values (like NaN), and does not compare them.
func decimal.Exp(x decimal, precision uint32) decimal, error
Exp calculates e**x.
func decimal.Ln(x decimal) decimal, error
Ln calculates the natural log of x.
func decimal.Log10(x decimal) decimal, error
Log10 calculates the base 10 log of x.
func decimal.Mul(x decimal, y decimal) decimal, error
Mul calculates the product x*y.
func decimal.Neg(x decimal) decimal, error
Neg calculates -x.
func decimal.Pow(x decimal, y decimal) decimal, error
Pow calculates x**y.
func decimal.Quantize(x decimal, exp int, precision uint32) decimal, error
Quantize calculates and rounds x as necessary so it is represented with exponent exp.
func decimal.Quo(x decimal, y decimal, precision uint32) decimal, error
Quo calculates the quotient x/y for y != 0.
func decimal.QuoInteger(x decimal, y decimal, precision uint32) decimal, error
QuoInteger calculates the integer part of the quotient x/y
func decimal.Reduce(x decimal) decimal, error
Reduce calculates x with all trailing zeros removed.
func decimal.Rem(x decimal, y decimal, precision uint32) decimal, error
Rem calculates the remainder part of the quotient x/y.
func decimal.Sqrt(x decimal) decimal, error
Sqrt calculates the square root of x. Sqrt uses the Babylonian method for computing the square root, which uses O(log p) steps for p digits of precision.
func decimal.Sub(x decimal, y decimal) decimal, error
Sub calculates the difference x-y.
func decimal.Round(x decimal, mode string, digits int) decimal, error
Round rounds x to the number of digits with the specified rounding mode. Supported rounding modes:
down
Rounds toward 0; truncate.
half_up
Rounds up if the digits are >= 0.5.
half_even
Rounds up if the digits are > 0.5. If the digits are equal to 0.5, it rounds up if the previous digit is odd, always producing an even digit.
ceiling
Rounds towards +Inf: rounds up if digits are > 0 and the number is positive.
floor
Rounds towards -Inf: rounds up if digits are > 0 and the number is negative.
half_down
Rounds up if the digits are > 0.5.
up
Rounds away from 0.
05up
Rounds zero or five away from 0; same as round-up, except that rounding up only occurs if the digit to be rounded up is 0 or 5.
finance
func finance.DaysDifference(date1 int64, date2 int64, basis int) int
DaysDifference returns the difference of days between two dates based on a daycount basis. Date1 and date2 are UNIX timestamps (seconds). "basis" must be one of: 0 = US(NASD) 30/360, 1 = Actual/actual, 2 = Actual/360, 3 = Actual/365, 4 = European 30/360.
func finance.DaysPerYear(year int, basis int) int
DaysPerYear returns the number of days in the year based on a daycount basis. "basis" must be one of: 0 = US(NASD) 30/360, 1 = Actual/actual, 2 = Actual/360, 3 = Actual/365, 4 = European 30/360.
func finance.DepreciationFixedDeclining(cost float64, salvage float64, life int, period int, month int) float64, error
DepreciationFixedDeclining returns the depreciation of an asset using the fixed-declining balance method. Excel equivalent: DB. "basis" must be one of: 0 = US(NASD) 30/360, 1 = Actual/actual, 2 = Actual/360, 3 = Actual/365, 4 = European 30/360.
func finance.DepreciationSYD(cost float64, salvage float64, life int, per int) float64
DepreciationSYD returns the depreciation for an asset in a given period using the sum-of-years' digits method. Excel equivalent: SYD.
func finance.DepreciationStraightLine(cost float64, salvage float64, life int) float64, error
DepreciationStraightLine returns the straight-line depreciation of an asset for each period. Excel equivalent: SLN.
func finance.DiscountRate(settlement int64, maturity int64, price float64, redemption float64, basis int) float64
DiscountRate returns the discount rate for a bond "settlement" is the unix timestamp (seconds) for the settlement date. "maturity" is the unix timestamp (seconds) for the maturity date. "price" is the bond's price per $100 face value. "redemption" is the bond's redemption value per $100 face value. Excel equivalent: DISC. "basis" must be one of: 0 = US(NASD) 30/360, 1 = Actual/actual, 2 = Actual/360, 3 = Actual/365, 4 = European 30/360.
func finance.EffectiveRate(nominal float64, numPeriods int) float64, error
EffectiveRate returns the effective interest rate given the nominal rate and the number of compounding payments per year. Excel equivalent: EFFECT.
func finance.FutureValue(rate float64, numPeriods int, pmt float64, pv float64, paymentType int)fv float64, err error
FutureValue returns the Future Value of a cash flow with constant payments and interest rate (annuities). Excel equivalent: FV. "paymentType" must be one of: 0 = PayEnd, 1 = PayBegin.
func finance.InterestPayment(rate float64, period int, numPeriods int, pv float64, fv float64, paymentType int) float64, error
InterestPayment returns the interest payment for a given period for a cash flow with constant periodic payments (annuities). Excel equivalent: IMPT. "paymentType" must be one of: 0 = PayEnd, 1 = PayBegin.
func finance.NominalRate(effectiveRate float64, numPeriods int) float64, error
NominalRate returns the nominal interest rate given the effective rate and the number of compounding payments per year. Excel equivalent: NOMINAL.
func finance.Payment(rate float64, numPeriods int, pv float64, fv float64, paymentType int)pmt float64, err error
Payment returns the constant payment (annuity) for a cash flow with a constant interest rate. Excel equivalent: PMT. "paymentType" must be one of: 0 = PayEnd, 1 = PayBegin.
func finance.Periods(rate float64, pmt float64, pv float64, fv float64, paymentType int)numPeriods float64, err error
Periods returns the number of periods for a cash flow with constant periodic payments (annuities), and interest rate. Excel equivalent: NPER. "paymentType" must be one of: 0 = PayEnd, 1 = PayBegin.
func finance.PresentValue(rate float64, numPeriods int, pmt float64, fv float64, paymentType int)pv float64, err error
PresentValue returns the Present Value of a cash flow with constant payments and interest rate (annuities). Excel equivalent: PV. "paymentType" must be one of: 0 = PayEnd, 1 = PayBegin.
func finance.PriceDiscount(settlement int64, maturity int64, discount float64, redemption float64, basis int) float64
PriceDiscount returns the price per $100 face value of a discounted bond. "settlement" is the unix timestamp (seconds) for the settlement date. "maturity" is the unix timestamp (seconds) for the maturity date. "discount" is the bond's discount rate. "redemption" is the bond's redemption value per $100 face value. Excel equivalent: PRICEDISC. "basis" must be one of: 0 = US(NASD) 30/360, 1 = Actual/actual, 2 = Actual/360, 3 = Actual/365, 4 = European 30/360.
func finance.PrincipalPayment(rate float64, period int, numPeriods int, pv float64, fv float64, paymentType int) float64, error
PrincipalPayment returns the principal payment for a given period for a cash flow with constant periodic payments (annuities). Excel equivalent: PPMT. "paymentType" must be one of: 0 = PayEnd, 1 = PayBegin.
func finance.Rate(numPeriods int, pmt float64, pv float64, fv float64, paymentType int, guess float64) float64, error
Rate returns the periodic interest rate for a cash flow with constant periodic payments (annuities). Guess is a guess for the rate, used as a starting point for the iterative algorithm. Excel equivalent: RATE. "paymentType" must be one of: 0 = PayEnd, 1 = PayBegin.
func finance.TBillEquivalentYield(settlement int64, maturity int64, discount float64) float64, error
TBillEquivalentYield returns the bond-equivalent yield for a Treasury bill. "settlement" is the unix timestamp (seconds) for the settlement date. "maturity" is the unix timestamp (seconds) for the maturity date. "discount" is the T-Bill discount rate. Excel equivalent: TBILLEQ.
func finance.TBillPrice(settlement int64, maturity int64, discount float64) float64, error
TBillPrice returns the price per $100 face value for a Treasury bill. "settlement" is the unix timestamp (seconds) for the settlement date. "maturity" is the unix timestamp (seconds) for the maturity date. "discount" is the T-Bill discount rate. Excel equivalent: TBILLPRICE.
func finance.TBillYield(settlement int64, maturity int64, price float64) float64, error
TBillYield returns the yield for a treasury bill. "settlement" is the unix timestamp (seconds) for the settlement date. "maturity" is the unix timestamp (seconds) for the maturity date. "price" is the TBill price per $100 face value. Excel equivalent: TBILLYIELD.
hex
func hex.EncodeToString(src []byte) string
EncodeToString returns the hexadecimal encoding of src.
func hex.DecodeString(s string) []byte, error
DecodeString returns the bytes represented by the hexadecimal string s.
DecodeString expects that src contains only hexadecimal characters and that src has even length. If the input is malformed, DecodeString returns the bytes decoded before the error.
html
func html.EscapeString(s string) string
EscapeString escapes special characters like "<" to become "<". It escapes only five such characters: <, >, &, ' and ". UnescapeString(EscapeString(s)) == s always holds, but the converse isn't always true.
func html.UnescapeString(s string) string
UnescapeString unescapes entities like "<" to become "<". It unescapes a larger range of entities than EscapeString escapes. For example, "á" unescapes to "á", as does "á" and "á". UnescapeString(EscapeString(s)) == s always holds, but the converse isn't always true.
json
func json.Marshal(v any) []byte, error
Marshal returns the JSON encoding of v.
Marshal traverses the value v recursively. If an encountered value implements [Marshaler] and is not a nil pointer, Marshal calls [Marshaler.MarshalJSON] to produce JSON. If no [Marshaler.MarshalJSON] method is present but the value implements [encoding.TextMarshaler] instead, Marshal calls [encoding.TextMarshaler.MarshalText] and encodes the result as a JSON string. The nil pointer exception is not strictly necessary but mimics a similar, necessary exception in the behavior of [Unmarshaler.UnmarshalJSON].
Otherwise, Marshal uses the following type-dependent default encodings:
Boolean values encode as JSON booleans.
Floating point, integer, and [Number] values encode as JSON numbers. NaN and +/-Inf values will return an [UnsupportedValueError].
String values encode as JSON strings coerced to valid UTF-8, replacing invalid bytes with the Unicode replacement rune. So that the JSON will be safe to embed inside HTML tags, the string is encoded using [HTMLEscape], which replaces "<", ">", "&", U+2028, and U+2029 are escaped to "\u003c","\u003e", "\u0026", "\u2028", and "\u2029". This replacement can be disabled when using an [Encoder], by calling Encoder.SetEscapeHTML(false)
.
Array and slice values encode as JSON arrays, except that []byte encodes as a base64-encoded string, and a nil slice encodes as the null JSON value.
Struct values encode as JSON objects. Each exported struct field becomes a member of the object, using the field name as the object key, unless the field is omitted for one of the reasons given below.
The encoding of each struct field can be customized by the format string stored under the "json" key in the struct field's tag. The format string gives the name of the field, possibly followed by a comma-separated list of options. The name may be empty in order to specify options without overriding the default field name.
The "omitempty" option specifies that the field should be omitted from the encoding if the field has an empty value, defined as false, 0, a nil pointer, a nil interface value, and any empty array, slice, map, or string.
As a special case, if the field tag is "-", the field is always omitted. Note that a field with name "-" can still be generated using the tag "-,".
Examples of struct field tags and their meanings:
// Field appears in JSON as key "myName".
Field int `json:"myName"`
// Field appears in JSON as key "myName" and
// the field is omitted from the object if its value is empty,
// as defined above.
Field int `json:"myName,omitempty"`
// Field appears in JSON as key "Field" (the default), but
// the field is skipped if empty.
// Note the leading comma.
Field int `json:",omitempty"`
// Field is ignored by this package.
Field int `json:"-"`
// Field appears in JSON as key "-".
Field int `json:"-,"`
The "string" option signals that a field is stored as JSON inside a JSON-encoded string. It applies only to fields of string, floating point, integer, or boolean types. This extra level of encoding is sometimes used when communicating with JavaScript programs:
Int64String int64 `json:",string"`
The key name will be used if it's a non-empty string consisting of only Unicode letters, digits, and ASCII punctuation except quotation marks, backslash, and comma.
Embedded struct fields are usually marshaled as if their inner exported fields were fields in the outer struct, subject to the usual Go visibility rules amended as described in the next paragraph. An anonymous struct field with a name given in its JSON tag is treated as having that name, rather than being anonymous. An anonymous struct field of interface type is treated the same as having that type as its name, rather than being anonymous.
The Go visibility rules for struct fields are amended for JSON when deciding which field to marshal or unmarshal. If there are multiple fields at the same level, and that level is the least nested (and would therefore be the nesting level selected by the usual Go rules), the following extra rules apply:
Of those fields, if any are JSON-tagged, only tagged fields are considered, even if there are multiple untagged fields that would otherwise conflict.
If there is exactly one field (tagged or not according to the first rule), that is selected.
Otherwise there are multiple fields, and all are ignored; no error occurs.
Handling of anonymous struct fields is new in Go 1.1. Prior to Go 1.1, anonymous struct fields were ignored. To force ignoring of an anonymous struct field in both current and earlier versions, give the field a JSON tag of "-".
Map values encode as JSON objects. The map's key type must either be a string, an integer type, or implement [encoding.TextMarshaler]. The map keys are sorted and used as JSON object keys by applying the following rules, subject to the UTF-8 coercion described for string values above:
- keys of any string type are used directly
- keys that implement [encoding.TextMarshaler] are marshaled
- integer keys are converted to strings
Pointer values encode as the value pointed to. A nil pointer encodes as the null JSON value.
Interface values encode as the value contained in the interface. A nil interface value encodes as the null JSON value.
Channel, complex, and function values cannot be encoded in JSON. Attempting to encode such a value causes Marshal to return an [UnsupportedTypeError].
JSON cannot represent cyclic data structures and Marshal does not handle them. Passing cyclic structures to Marshal will result in an error.
math
func math.Abs(x float64) float64
Abs returns the absolute value of x.
Special cases are:
Abs(±Inf) = +Inf
Abs(NaN) = NaN
func math.Cbrt(x float64) float64
Cbrt returns the cube root of x.
Special cases are:
Cbrt(±0) = ±0
Cbrt(±Inf) = ±Inf
Cbrt(NaN) = NaN
func math.Copysign(f float64, sign float64) float64
Copysign returns a value with the magnitude of f and the sign of sign.
func math.Dim(x float64, y float64) float64
Dim returns the maximum of x-y or 0.
Special cases are:
Dim(+Inf, +Inf) = NaN
Dim(-Inf, -Inf) = NaN
Dim(x, NaN) = Dim(NaN, x) = NaN
func math.Max(x float64, y float64) float64
Max returns the larger of x or y.
Special cases are:
Max(x, +Inf) = Max(+Inf, x) = +Inf
Max(x, NaN) = Max(NaN, x) = NaN
Max(+0, ±0) = Max(±0, +0) = +0
Max(-0, -0) = -0
Note that this differs from the built-in function max when called with NaN and +Inf.
func math.Min(x float64, y float64) float64
Min returns the smaller of x or y.
Special cases are:
Min(x, -Inf) = Min(-Inf, x) = -Inf
Min(x, NaN) = Min(NaN, x) = NaN
Min(-0, ±0) = Min(±0, -0) = -0
Note that this differs from the built-in function min when called with NaN and -Inf.
func math.Exp(x float64) float64
Exp returns e**x, the base-e exponential of x.
Special cases are:
Exp(+Inf) = +Inf
Exp(NaN) = NaN
Very large values overflow to 0 or +Inf. Very small values underflow to 1.
func math.Exp2(x float64) float64
Exp2 returns 2**x, the base-2 exponential of x.
Special cases are the same as [Exp].
func math.Expm1(x float64) float64
Expm1 returns e**x - 1, the base-e exponential of x minus 1. It is more accurate than Exp(x)
- 1 when x is near zero.
Special cases are:
Expm1(+Inf) = +Inf
Expm1(-Inf) = -1
Expm1(NaN) = NaN
Very large values overflow to -1 or +Inf.
func math.Floor(x float64) float64
Floor returns the greatest integer value less than or equal to x.
Special cases are:
Floor(±0) = ±0
Floor(±Inf) = ±Inf
Floor(NaN) = NaN
func math.Ceil(x float64) float64
Ceil returns the least integer value greater than or equal to x.
Special cases are:
Ceil(±0) = ±0
Ceil(±Inf) = ±Inf
Ceil(NaN) = NaN
func math.Trunc(x float64) float64
Trunc returns the integer value of x.
Special cases are:
Trunc(±0) = ±0
Trunc(±Inf) = ±Inf
Trunc(NaN) = NaN
func math.Round(x float64) float64
Round returns the nearest integer, rounding half away from zero.
Special cases are:
Round(±0) = ±0
Round(±Inf) = ±Inf
Round(NaN) = NaN
func math.RoundToEven(x float64) float64
RoundToEven returns the nearest integer, rounding ties to even.
Special cases are:
RoundToEven(±0) = ±0
RoundToEven(±Inf) = ±Inf
RoundToEven(NaN) = NaN
func math.FMA(x float64, y float64, z float64) float64
FMA returns x * y + z, computed with only one rounding. (That is, FMA returns the fused multiply-add of x, y, and z.)
func math.Hypot(p float64, q float64) float64
Hypot returns [Sqrt](pp + qq), taking care to avoid unnecessary overflow and underflow.
Special cases are:
Hypot(±Inf, q) = +Inf
Hypot(p, ±Inf) = +Inf
Hypot(NaN, q) = NaN
Hypot(p, NaN) = NaN
func math.Log(x float64) float64
Log returns the natural logarithm of x.
Special cases are:
Log(+Inf) = +Inf
Log(0) = -Inf
Log(x < 0) = NaN
Log(NaN) = NaN
func math.Log10(x float64) float64
Log10 returns the decimal logarithm of x. The special cases are the same as for [Log].
func math.Log2(x float64) float64
Log2 returns the binary logarithm of x. The special cases are the same as for [Log].
func math.Log1p(x float64) float64
Log1p returns the natural logarithm of 1 plus its argument x. It is more accurate than [Log](1 + x) when x is near zero.
Special cases are:
Log1p(+Inf) = +Inf
Log1p(±0) = ±0
Log1p(-1) = -Inf
Log1p(x < -1) = NaN
Log1p(NaN) = NaN
func math.Mod(x float64, y float64) float64
Mod returns the floating-point remainder of x/y. The magnitude of the result is less than y and its sign agrees with that of x.
Special cases are:
Mod(±Inf, y) = NaN
Mod(NaN, y) = NaN
Mod(x, 0) = NaN
Mod(x, ±Inf) = x
Mod(x, NaN) = NaN
func math.Pow(x float64, y float64) float64
Pow returns x**y, the base-x exponential of y.
Special cases are (in order):
Pow(x, ±0) = 1 for any x
Pow(1, y) = 1 for any y
Pow(x, 1) = x for any x
Pow(NaN, y) = NaN
Pow(x, NaN) = NaN
Pow(±0, y) = ±Inf for y an odd integer < 0
Pow(±0, -Inf) = +Inf
Pow(±0, +Inf) = +0
Pow(±0, y) = +Inf for finite y < 0 and not an odd integer
Pow(±0, y) = ±0 for y an odd integer > 0
Pow(±0, y) = +0 for finite y > 0 and not an odd integer
Pow(-1, ±Inf) = 1
Pow(x, +Inf) = +Inf for |x| > 1
Pow(x, -Inf) = +0 for |x| > 1
Pow(x, +Inf) = +0 for |x| < 1
Pow(x, -Inf) = +Inf for |x| < 1
Pow(+Inf, y) = +Inf for y > 0
Pow(+Inf, y) = +0 for y < 0
Pow(-Inf, y) = Pow(-0, -y)
Pow(x, y) = NaN for finite x < 0 and finite non-integer y
func math.Pow10(n int) float64
Pow10 returns 10**n, the base-10 exponential of n.
Special cases are:
Pow10(n) = 0 for n < -323
Pow10(n) = +Inf for n > 308
func math.Remainder(x float64, y float64) float64
Remainder returns the IEEE 754 floating-point remainder of x/y.
Special cases are:
Remainder(±Inf, y) = NaN
Remainder(NaN, y) = NaN
Remainder(x, 0) = NaN
Remainder(x, ±Inf) = x
Remainder(x, NaN) = NaN
func math.Signbit(x float64) bool
Signbit reports whether x is negative or negative zero.
func math.Sqrt(x float64) float64
Sqrt returns the square root of x.
Special cases are:
Sqrt(+Inf) = +Inf
Sqrt(±0) = ±0
Sqrt(x < 0) = NaN
Sqrt(NaN) = NaN
md5
func md5.Sum(data []byte) []byte
Sum returns the MD5 checksum of the data.
money
func money.Add(a money, b money) money, error
Add two Money types and return the result
func money.Sub(a money, b money) money, error
Compute the difference between two Money types
func money.Mul(a money, b string) money, error
Multiply a Money type by a string-represented number
func money.Div(a money, b string) money, error
Divide a Money type by a string-represented number
path
func path.Clean(path string) string
Clean returns the shortest path name equivalent to path by purely lexical processing. It applies the following rules iteratively until no further processing can be done:
- Replace multiple slashes with a single slash.
- Eliminate each . path name element (the current directory).
- Eliminate each inner .. path name element (the parent directory) along with the non-.. element that precedes it.
- Eliminate .. elements that begin a rooted path: that is, replace "/.." by "/" at the beginning of a path.
The returned path ends in a slash only if it is the root "/".
If the result of this process is an empty string, Clean returns the string ".".
See also Rob Pike, “Lexical File Names in Plan 9 or Getting Dot-Dot Right,” https://9p.io/sys/doc/lexnames.html
func path.Ext(path string) string
Ext returns the file name extension used by path. The extension is the suffix beginning at the final dot in the final slash-separated element of path; it is empty if there is no dot.
func path.Base(path string) string
Base returns the last element of path. Trailing slashes are removed before extracting the last element. If the path is empty, Base returns ".". If the path consists entirely of slashes, Base returns "/".
func path.IsAbs(path string) bool
IsAbs reports whether the path is absolute.
func path.Dir(path string) string
Dir returns all but the last element of path, typically the path's directory. After dropping the final element using [Split], the path is Cleaned and trailing slashes are removed. If the path is empty, Dir returns ".". If the path consists entirely of slashes followed by non-slash bytes, Dir returns a single slash. In any other case, the returned path does not end in a slash.
rand
func rand.Int63() int64
Int63 returns a non-negative pseudo-random 63-bit integer as an int64 from the default [Source].
func rand.Uint32() uint32
Uint32 returns a pseudo-random 32-bit value as a uint32 from the default [Source].
func rand.Uint64() uint64
Uint64 returns a pseudo-random 64-bit value as a uint64 from the default [Source].
func rand.Int31() int32
Int31 returns a non-negative pseudo-random 31-bit integer as an int32 from the default [Source].
func rand.Int() int
Int returns a non-negative pseudo-random int from the default [Source].
func rand.Int63n(n int64) int64
Int63n returns, as an int64, a non-negative pseudo-random number in the half-open interval [0,n) from the default [Source]. It panics if n <= 0.
func rand.Int31n(n int32) int32
Int31n returns, as an int32, a non-negative pseudo-random number in the half-open interval [0,n) from the default [Source]. It panics if n <= 0.
func rand.Intn(n int) int
Intn returns, as an int, a non-negative pseudo-random number in the half-open interval [0,n) from the default [Source]. It panics if n <= 0.
func rand.Float64() float64
Float64 returns, as a float64, a pseudo-random number in the half-open interval [0.0,1.0) from the default [Source].
func rand.Float32() float32
Float32 returns, as a float32, a pseudo-random number in the half-open interval [0.0,1.0) from the default [Source].
func rand.NormFloat64() float64
NormFloat64 returns a normally distributed float64 in the range [-[math.MaxFloat64], +[math.MaxFloat64]] with standard normal distribution (mean = 0, stddev = 1) from the default [Source]. To produce a different normal distribution, callers can adjust the output using:
sample = NormFloat64() * desiredStdDev + desiredMean
func rand.ExpFloat64() float64
ExpFloat64 returns an exponentially distributed float64 in the range (0, +[math.MaxFloat64]] with an exponential distribution whose rate parameter (lambda) is 1 and whose mean is 1/lambda (1) from the default [Source]. To produce a distribution with a different rate parameter, callers can adjust the output using:
sample = ExpFloat64() / desiredRateParameter
sha1
func sha1.Sum(data []byte) []byte
Sum returns the SHA-1 checksum of the data.
sha256
func sha256.Sum256(data []byte) []byte
Sum256 returns the SHA256 checksum of the data.
sha512
func sha512.Sum512(data []byte) []byte
Sum512 returns the SHA512 checksum of the data.
strings
func strings.Compare(a string, b string) int
Compare returns an integer comparing two strings lexicographically. The result will be 0 if a == b, -1 if a < b, and +1 if a > b.
Use Compare when you need to perform a three-way comparison (with [slices.SortFunc], for example). It is usually clearer and always faster to use the built-in string comparison operators ==, <, >, and so on.
func strings.Count(s string, substr string) int
Count counts the number of non-overlapping instances of substr in s. If substr is an empty string, Count returns 1 + the number of Unicode code points in s.
func strings.Contains(s string, substr string) bool
Contains reports whether substr is within s.
func strings.ContainsAny(s string, chars string) bool
ContainsAny reports whether any Unicode code points in chars are within s.
func strings.LastIndex(s string, substr string) int
LastIndex returns the index of the last instance of substr in s, or -1 if substr is not present in s.
func strings.IndexAny(s string, chars string) int
IndexAny returns the index of the first instance of any Unicode code point from chars in s, or -1 if no Unicode code point from chars is present in s.
func strings.LastIndexAny(s string, chars string) int
LastIndexAny returns the index of the last instance of any Unicode code point from chars in s, or -1 if no Unicode code point from chars is present in s.
func strings.HasPrefix(s string, prefix string) bool
HasPrefix reports whether the string s begins with prefix.
func strings.HasSuffix(s string, suffix string) bool
HasSuffix reports whether the string s ends with suffix.
func strings.Repeat(s string, count int) string
Repeat returns a new string consisting of count copies of the string s.
It panics if count is negative or if the result of (len(s) * count) overflows.
func strings.ToUpper(s string) string
ToUpper returns s with all Unicode letters mapped to their upper case.
func strings.ToLower(s string) string
ToLower returns s with all Unicode letters mapped to their lower case.
func strings.ToTitle(s string) string
ToTitle returns a copy of the string s with all Unicode letters mapped to their Unicode title case.
func strings.ToValidUTF8(s string, replacement string) string
ToValidUTF8 returns a copy of the string s with each run of invalid UTF-8 byte sequences replaced by the replacement string, which may be empty.
func strings.Title(s string) string
Title returns a copy of the string s with all Unicode letters that begin words mapped to their Unicode title case.
Deprecated: The rule Title uses for word boundaries does not handle Unicode punctuation properly. Use golang.org/x/text/cases instead.
func strings.Trim(s string, cutset string) string
Trim returns a slice of the string s with all leading and trailing Unicode code points contained in cutset removed.
func strings.TrimLeft(s string, cutset string) string
TrimLeft returns a slice of the string s with all leading Unicode code points contained in cutset removed.
To remove a prefix, use [TrimPrefix] instead.
func strings.TrimRight(s string, cutset string) string
TrimRight returns a slice of the string s, with all trailing Unicode code points contained in cutset removed.
To remove a suffix, use [TrimSuffix] instead.
func strings.TrimSpace(s string) string
TrimSpace returns a slice of the string s, with all leading and trailing white space removed, as defined by Unicode.
func strings.TrimPrefix(s string, prefix string) string
TrimPrefix returns s without the provided leading prefix string. If s doesn't start with prefix, s is returned unchanged.
func strings.TrimSuffix(s string, suffix string) string
TrimSuffix returns s without the provided trailing suffix string. If s doesn't end with suffix, s is returned unchanged.
func strings.Replace(s string, old string, new string, n int) string
Replace returns a copy of the string s with the first n non-overlapping instances of old replaced by new. If old is empty, it matches at the beginning of the string and after each UTF-8 sequence, yielding up to k+1 replacements for a k-rune string. If n < 0, there is no limit on the number of replacements.
func strings.ReplaceAll(s string, old string, new string) string
ReplaceAll returns a copy of the string s with all non-overlapping instances of old replaced by new. If old is empty, it matches at the beginning of the string and after each UTF-8 sequence, yielding up to k+1 replacements for a k-rune string.
func strings.EqualFold(s string, t string) bool
EqualFold reports whether s and t, interpreted as UTF-8 strings, are equal under simple Unicode case-folding, which is a more general form of case-insensitivity.
func strings.Index(s string, substr string) int
Index returns the index of the first instance of substr in s, or -1 if substr is not present in s.
url
func url.QueryEscape(s string) string
QueryEscape escapes the string so it can be safely placed inside a [URL] query.
func url.PathEscape(s string) string
PathEscape escapes the string so it can be safely placed inside a [URL] path segment, replacing special characters (including /) with %XX sequences as needed.
uuid
func uuid.New() uuid
New creates a new random UUID.
func uuid.NewMD5(space uuid, data []byte) uuid
NewMD5 returns a new MD5 (Version 3) UUID based on the supplied name space and data.
func uuid.NewSHA1(space uuid, data []byte) uuid
NewSHA1 returns a new SHA1 (Version 5) UUID based on the supplied name space and data.