?
This document uses PHP Chinese website manual Release
import "go/constant"
Overview
Index
包常量實現(xiàn)了表示無類型的Go常量及其相應(yīng)操作的值。
由于錯誤而導(dǎo)致值未知時,可能會使用特殊的未知值。除非另有規(guī)定,對未知值的操作會產(chǎn)生未知值。
func BitLen(x Value) int
func BoolVal(x Value) bool
func Bytes(x Value) []byte
func Compare(x_ Value, op token.Token, y_ Value) bool
func Float32Val(x Value) (float32, bool)
func Float64Val(x Value) (float64, bool)
func Int64Val(x Value) (int64, bool)
func Sign(x Value) int
func StringVal(x Value) string
func Uint64Val(x Value) (uint64, bool)
type Kind
type Value
func BinaryOp(x_ Value, op token.Token, y_ Value) Value
func Denom(x Value) Value
func Imag(x Value) Value
func MakeBool(b bool) Value
func MakeFloat64(x float64) Value
func MakeFromBytes(bytes []byte) Value
func MakeFromLiteral(lit string, tok token.Token, zero uint) Value
func MakeImag(x Value) Value
func MakeInt64(x int64) Value
func MakeString(s string) Value
func MakeUint64(x uint64) Value
func MakeUnknown() Value
func Num(x Value) Value
func Real(x Value) Value
func Shift(x Value, op token.Token, s uint) Value
func ToComplex(x Value) Value
func ToFloat(x Value) Value
func ToInt(x Value) Value
func UnaryOp(op token.Token, y Value, prec uint) Value
value.go
func BitLen(x Value) int
BitLen返回以二進(jìn)制表示形式表示絕對值x所需的位數(shù); x必須是一個Int或一個Unknown。如果x未知,則結(jié)果為0。
func BoolVal(x Value) bool
BoolVal返回x的Go布爾值,它必須是Bool或Unknown。如果x是未知的,結(jié)果是錯誤的。
func Bytes(x Value) []byte
Bytes以little-endian二進(jìn)制表示形式返回x的絕對值的字節(jié); x必須是一個Int。
func Compare(x_ Value, op token.Token, y_ Value) bool
Compare返回比較結(jié)果x op y。必須為操作數(shù)定義比較。如果其中一個操作數(shù)為“未知”,則結(jié)果為false。
func Float32Val(x Value) (float32, bool)
Float32Val就像Float64Val,但是用于float32而不是float64。
func Float64Val(x Value) (float64, bool)
Float64Val返回x的最接近的Go float64值以及結(jié)果是否準(zhǔn)確; x必須是數(shù)字或未知的,但不是復(fù)雜的。對于太?。ㄌ咏?)的值來表示為float64,F(xiàn)loat64Val將靜默下溢到0.結(jié)果符號始終與x的符號匹配,即使為0.如果x為“未知”,則結(jié)果為(0,false)。
func Int64Val(x Value) (int64, bool)
Int64Val返回x的Go int64值以及結(jié)果是否準(zhǔn)確; x必須是一個Int或一個Unknown。如果結(jié)果不準(zhǔn)確,則其值不確定。如果x是未知的,結(jié)果是(0,false)。
func Sign(x Value) int
取決于x <0,x == 0還是x> 0,符號返回-1,0或1; x必須是數(shù)字或未知。對于復(fù)數(shù)值x,如果x == 0,則符號為0,否則為!= 0.如果x為未知,則結(jié)果為1。
func StringVal(x Value) string
StringVal返回x的Go字符串值,它必須是String或Unknown。如果x是未知的,結(jié)果是“”。
func Uint64Val(x Value) (uint64, bool)
Uint64Val返回x的Go uint64值和結(jié)果是否確切; x必須是一個Int或一個Unknown。如果結(jié)果不準(zhǔn)確,則其值不確定。如果x是未知的,結(jié)果是(0,false)。
Kind指定由值表示的值的種類。
type Kind int
const ( // unknown values Unknown Kind = iota // non-numeric values Bool String // numeric values Int Float Complex)
Value代表Go常數(shù)的值。
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(x_ Value, op token.Token, y_ Value) Value
BinaryOp返回二進(jìn)制表達(dá)式x op y的結(jié)果。該操作必須為操作數(shù)定義。如果其中一個操作數(shù)為“未知”,則結(jié)果為“未知”。BinaryOp不處理比較或轉(zhuǎn)換; 使用Compare或Shift來代替。
要強制Int操作數(shù)的整數(shù)除法,請使用op == token.QUO_ASSIGN而不是token.QUO; 在這種情況下結(jié)果保證為Int。除以零引起運行時恐慌。
func Denom(x Value) Value
Denom返回x的分母; x必須是Int,F(xiàn)loat或Unknown。如果x是未知的,或者如果它太大或太小而不能表示為分?jǐn)?shù),則結(jié)果為未知。否則結(jié)果是一個Int> = 1。
func Imag(x Value) Value
Imag返回x的虛部,它必須是數(shù)字或未知值。如果x未知,則結(jié)果為未知。
func MakeBool(b bool) Value
MakeBool返回b的Bool值。
func MakeFloat64(x float64) Value
MakeFloat64返回x的Float值。如果x不是有限的,則結(jié)果是未知。
func MakeFromBytes(bytes []byte) Value
MakeFromBytes在給定其小端編碼表示的字節(jié)的情況下返回Int值。一個空的字節(jié)切片參數(shù)代表0。
func MakeFromLiteral(lit string, tok token.Token, zero uint) Value
MakeFromLiteral為Go文字字符串返回相應(yīng)的整數(shù),浮點數(shù),虛數(shù),字符或字符串值。tok值必須是token.INT,token.FLOAT,token.IMAG,token.CHAR或token.STRING中的一個。最后的論點必須是零。如果文字字符串語法無效,則結(jié)果為未知。
func MakeImag(x Value) Value
MakeImag返回Complex值x * i; x必須是Int,F(xiàn)loat或Unknown。如果x未知,則結(jié)果為未知。
func MakeInt64(x int64) Value
MakeInt64返回x的Int值。
func MakeString(s string) Value
MakeString返回s的字符串值。
func MakeUint64(x uint64) Value
MakeUint64返回x的Int值。
func MakeUnknown() Value
MakeUnknown返回未知值。
func Num(x Value) Value
Num返回x的分子; x必須是Int,F(xiàn)loat或Unknown。如果x是未知的,或者如果它太大或太小而不能表示為分?jǐn)?shù),則結(jié)果為未知。否則,結(jié)果是帶有與x相同符號的Int。
func Real(x Value) Value
實數(shù)返回x的實數(shù)部分,它必須是數(shù)字或未知值。如果x未知,則結(jié)果為未知。
func Shift(x Value, op token.Token, s uint) Value
Shift返回移位表達(dá)式x op s的結(jié)果與op == token.SHL或token.SHR(<<或>>)。x必須是一個Int或一個Unknown。如果x是未知的,結(jié)果是x。
func ToComplex(x Value) Value
ToComplex將x轉(zhuǎn)換為Complex值,如果x可表示為Complex。否則它返回一個未知。
func ToFloat(x Value) Value
ToFloat將x轉(zhuǎn)換為Float值(如果x可表示為Float)。否則它返回一個未知。
func ToInt(x Value) Value
如果x可表示為Int,ToInt將x轉(zhuǎn)換為Int值。否則它返回一個未知。
func UnaryOp(op token.Token, y Value, prec uint) Value
UnaryOp返回一元表達(dá)式op y的結(jié)果。該操作必須為操作數(shù)定義。如果prec> 0,則它以位為單位指定^(異或)結(jié)果大小。如果y未知,則結(jié)果為未知。