go1.20.5
GoThrough

constant.Bool

// non-numeric values const Bool = iota

constant.Complex

const Complex = iota

constant.Float

const Float = iota

constant.Int

// numeric values const Int = iota

constant.String

const String = iota

constant.Unknown

// unknown values const Unknown = iota

constant.Value

// A Value represents the value of a Go constant. type Value interface { // Kind returns the value kind. Kind() Kind // String returns a short, quoted (human-readable) form of the value. // For numeric values, the result may be an approximation; // for String values the result may be a shortened string. // Use ExactString for a string representing a value exactly. String() string // ExactString returns an exact, quoted (human-readable) form of the value. // If the Value is of Kind String, use StringVal to obtain the unquoted string. ExactString() string }

constant.BinaryOp

// BinaryOp returns the result of the binary expression x op y. // The operation must be defined for the operands. If one of the // operands is Unknown, the result is Unknown. // BinaryOp doesn't handle comparisons or shifts; use Compare // or Shift instead. // // To force integer division of Int operands, use op == token.QUO_ASSIGN // instead of token.QUO; the result is guaranteed to be Int in this case. // Division by zero leads to a run-time panic. func BinaryOp(x_ Value, op token.Token, y_ Value) Value

constant.BitLen

// BitLen returns the number of bits required to represent // the absolute value x in binary representation; x must be an Int or an Unknown. // If x is Unknown, the result is 0. func BitLen(x Value) int

constant.BoolVal

// BoolVal returns the Go boolean value of x, which must be a Bool or an Unknown. // If x is Unknown, the result is false. func BoolVal(x Value) bool

constant.Bytes

// Bytes returns the bytes for the absolute value of x in little- // endian binary representation; x must be an Int. func Bytes(x Value) []byte

constant.Compare

// Compare returns the result of the comparison x op y. // The comparison must be defined for the operands. // If one of the operands is Unknown, the result is // false. func Compare(x_ Value, op token.Token, y_ Value) bool

constant.Denom

// Denom returns the denominator of x; x must be Int, Float, or Unknown. // If x is Unknown, or if it is too large or small to represent as a // fraction, the result is Unknown. Otherwise the result is an Int >= 1. func Denom(x Value) Value

constant.Float32Val

// Float32Val is like Float64Val but for float32 instead of float64. func Float32Val(x Value) (float32, bool)

constant.Float64Val

// Float64Val returns the nearest Go float64 value of x and whether the result is exact; // x must be numeric or an Unknown, but not Complex. For values too small (too close to 0) // to represent as float64, Float64Val silently underflows to 0. The result sign always // matches the sign of x, even for 0. // If x is Unknown, the result is (0, false). func Float64Val(x Value) (float64, bool)

constant.Imag

// Imag returns the imaginary part of x, which must be a numeric or unknown value. // If x is Unknown, the result is Unknown. func Imag(x Value) Value

constant.Int64Val

// Int64Val returns the Go int64 value of x and whether the result is exact; // x must be an Int or an Unknown. If the result is not exact, its value is undefined. // If x is Unknown, the result is (0, false). func Int64Val(x Value) (int64, bool)

constant.Make

// Make returns the Value for x. // // type of x result Kind // ---------------------------- // bool Bool // string String // int64 Int // *big.Int Int // *big.Float Float // *big.Rat Float // anything else Unknown func Make(x any) Value

constant.MakeBool

// MakeBool returns the Bool value for b. func MakeBool(b bool) Value

constant.MakeFloat64

// MakeFloat64 returns the Float value for x. // If x is -0.0, the result is 0.0. // If x is not finite, the result is an Unknown. func MakeFloat64(x float64) Value

constant.MakeFromBytes

// MakeFromBytes returns the Int value given the bytes of its little-endian // binary representation. An empty byte slice argument represents 0. func MakeFromBytes(bytes []byte) Value

constant.MakeFromLiteral

// MakeFromLiteral returns the corresponding integer, floating-point, // imaginary, character, or string value for a Go literal string. The // tok value must be one of token.INT, token.FLOAT, token.IMAG, // token.CHAR, or token.STRING. The final argument must be zero. // If the literal string syntax is invalid, the result is an Unknown. func MakeFromLiteral(lit string, tok token.Token, zero uint) Value

constant.MakeImag

// MakeImag returns the Complex value x*i; // x must be Int, Float, or Unknown. // If x is Unknown, the result is Unknown. func MakeImag(x Value) Value

constant.MakeInt64

// MakeInt64 returns the Int value for x. func MakeInt64(x int64) Value

constant.MakeString

// MakeString returns the String value for s. func MakeString(s string) Value

constant.MakeUint64

// MakeUint64 returns the Int value for x. func MakeUint64(x uint64) Value

constant.MakeUnknown

// MakeUnknown returns the Unknown value. func MakeUnknown() Value

constant.Num

// Num returns the numerator of x; x must be Int, Float, or Unknown. // If x is Unknown, or if it is too large or small to represent as a // fraction, the result is Unknown. Otherwise the result is an Int // with the same sign as x. func Num(x Value) Value

constant.Real

// Real returns the real part of x, which must be a numeric or unknown value. // If x is Unknown, the result is Unknown. func Real(x Value) Value

constant.Shift

// Shift returns the result of the shift expression x op s // with op == token.SHL or token.SHR (<< or >>). x must be // an Int or an Unknown. If x is Unknown, the result is x. func Shift(x Value, op token.Token, s uint) Value

constant.Sign

// Sign returns -1, 0, or 1 depending on whether x < 0, x == 0, or x > 0; // x must be numeric or Unknown. For complex values x, the sign is 0 if x == 0, // otherwise it is != 0. If x is Unknown, the result is 1. func Sign(x Value) int

constant.StringVal

// StringVal returns the Go string value of x, which must be a String or an Unknown. // If x is Unknown, the result is "". func StringVal(x Value) string