Package constant

import "go/constant"
Overview
Index
Examples

Overview ▾

包常量实现了表示无类型Go常量的值及其相应的操作.

当由于错误而未知的值时,可以使用特殊的未知值. 除非另有说明,否则对未知值进行的运算会产生未知值.

例子(ComplexNumbers)

Could not represent real part 25.3 exactly as float64
literal (25.3+55i)
go/constant (25.3 + 55i)
complex128 (25.299999999999997+55i)

func BitLen 1.5

func BitLen(x Value) int

BitLen返回以二进制表示形式表示绝对值x所需的位数. x必须是Int或Unknown. 如果x为未知,则结果为0.

func BoolVal 1.5

func BoolVal(x Value) bool

BoolVal返回x的Go布尔值,该值必须是Bool或Unknown. 如果x为未知,则结果为false.

func Bytes 1.5

func Bytes(x Value) []byte

字节以小尾数二进制表示形式返回x的绝对值的字节. x必须是一个Int.

func Compare 1.5

func Compare(x_ Value, op token.Token, y_ Value) bool

比较返回比较结果x op y. 必须为操作数定义比较. 如果操作数之一为未知,则结果为false.

Example

Frame
Z
a
bacon
defer
go

func Float32Val 1.5

func Float32Val(x Value) (float32, bool)

Float32Val类似于Float64Val,但用于float32而不是float64.

func Float64Val 1.5

func Float64Val(x Value) (float64, bool)

Float64Val返回x的最接近的Go float64值以及结果是否准确; x必须是数字或未知,但不能是复数. 对于太小(太接近0)而无法表示为float64的值,Float64Val会默默下溢至0.结果符号始终与x的符号匹配,即使对于0也是如此.如果x为Unknown,则结果为(0,false).

func Int64Val 1.5

func Int64Val(x Value) (int64, bool)

Int64Val返回x的Go int64值以及结果是否准确; x必须是Int或Unknown. 如果结果不正确,则其值不确定. 如果x为未知,则结果为(0,false).

func Sign 1.5

func Sign(x Value) int

根据x <0,x == 0或x> 0,符号返回-1、0或1. x必须为数字或未知. 对于复数值x,如果x == 0,则符号为0,否则为!=0.如果x为Unknown,则结果为1.

Example

-1 -1
-1 (0 + -1i)
-1 (1 + -1i)
-1 (-1 + 1i)
-1 (-1 + -1i)
 0 0
 0 (0 + 0i)
 1 1
 1 (0 + 1i)
 1 (1 + 1i)

func StringVal 1.5

func StringVal(x Value) string

StringVal返回x的Go字符串值,该值必须为String或Unknown. 如果x为未知,则结果为"".

func Uint64Val 1.5

func Uint64Val(x Value) (uint64, bool)

Uint64Val返回x的Go uint64值以及结果是否准确;否则,返回0. x必须是Int或Unknown. 如果结果不正确,则其值不确定. 如果x为未知,则结果为(0,false).

func Val 1.13

func Val(x Value) interface{}

Val返回给定常数的基础值. 因为它返回一个接口,所以由调用者键入将结果断言为期望的类型. 可能的动态返回类型为:

x Kind             type of result
-----------------------------------------
Bool               bool
String             string
Int                int64 or *big.Int
Float              *big.Float or *big.Rat
everything else    nil

Example

9223372036854775807
6121026514868073/2251799813685248
true
false

type Kind 1.5

种类指定由值表示的值的种类.

type Kind int
const (
    // unknown values
    Unknown Kind = iota

    // non-numeric values
    Bool
    String

    // numeric values
    Int
    Float
    Complex
)

type Value 1.6

值表示Go常数的值.

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
    // contains filtered or unexported methods
}

func BinaryOp 1.5

func BinaryOp(x_ Value, op token.Token, y_ Value) Value

BinaryOp返回二进制表达式x op y的结果. 必须为操作数定义操作. 如果操作数之一为未知,则结果为未知. BinaryOp不处理比较或移位; 而是使用"比较"或" Shift".

要强制对Int操作数进行整数除法,请使用op == token.QUO_ASSIGN代替token.QUO;. 在这种情况下,结果保证为Int. 除以零会导致运行时恐慌.

Example

22

func Denom 1.5

func Denom(x Value) Value

Denom返回x的分母; x必须是Int,Float或Unknown. 如果x为未知,或者它太大或太小而无法表示为分数,则结果为未知. 否则结果是Int> = 1.

func Imag 1.5

func Imag(x Value) Value

Imag返回x的虚部,该虚部必须是数字或未知值. 如果x为未知,则结果为未知.

func Make 1.13

func Make(x interface{}) Value

Make返回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 MakeBool 1.5

func MakeBool(b bool) Value

MakeBool返回b的Bool值.

func MakeFloat64 1.5

func MakeFloat64(x float64) Value

MakeFloat64返回x的Float值. 如果x不是有限的,则结果为未知.

func MakeFromBytes 1.5

func MakeFromBytes(bytes []byte) Value

给定其Little-endian二进制表示形式的字节,MakeFromBytes返回Int值. 空字节片参数表示0.

func MakeFromLiteral 1.5

func MakeFromLiteral(lit string, tok token.Token, zero uint) Value

MakeFromLiteral返回Go文字字符串的相应整数,浮点数,虚数,字符或字符串值. tok值必须是token.INT,token.FLOAT,token.IMAG,token.CHAR或token.STRING之一. 最后一个参数必须为零. 如果文字字符串语法无效,则结果为未知.

func MakeImag 1.5

func MakeImag(x Value) Value

MakeImag返回复杂值x * i; x必须是Int,Float或Unknown. 如果x为未知,则结果为未知.

func MakeInt64 1.5

func MakeInt64(x int64) Value

MakeInt64返回x的Int值.

func MakeString 1.5

func MakeString(s string) Value

MakeString返回的String值.

func MakeUint64 1.5

func MakeUint64(x uint64) Value

MakeUint64返回x的Int值.

func MakeUnknown 1.5

func MakeUnknown() Value

MakeUnknown返回Unknown值.

func Num 1.5

func Num(x Value) Value

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 Real 1.5

func Real(x Value) Value

实数返回x的实数部分,该实数部分必须是数字或未知值. 如果x为未知,则结果为未知.

func Shift 1.5

func Shift(x Value, op token.Token, s uint) Value

Shift返回带有op == token.SHL或token.SHR(<<或>>)的移位表达式x op s的结果. x必须是Int或Unknown. 如果x为未知,则结果为x.

func ToComplex 1.6

func ToComplex(x Value) Value

如果x可表示为Complex,则ToComplex将x转换为Complex值. 否则,它将返回未知.

func ToFloat 1.6

func ToFloat(x Value) Value

如果x可表示为Float,则ToFloat会将x转换为Float值. 否则,它将返回未知.

func ToInt 1.6

func ToInt(x Value) Value

如果x可表示为Int,则ToInt将x转换为Int值. 否则,它将返回未知.

func UnaryOp 1.5

func UnaryOp(op token.Token, y Value, prec uint) Value

UnaryOp返回一元表达式op y的结果. 必须为操作数定义操作. 如果prec> 0,则以位为单位指定^(异或)结果大小. 如果y为未知,则结果为未知.

Example

false
-2.7
65493

by  ICOPY.SITE