?
本文檔使用 php中文網(wǎng)手冊(cè) 發(fā)布
import "go/constant"
Overview
Index
包常量實(shí)現(xiàn)了表示無類型的Go常量及其相應(yīng)操作的值。
由于錯(cuò)誤而導(dǎo)致值未知時(shí),可能會(huì)使用特殊的未知值。除非另有規(guī)定,對(duì)未知值的操作會(huì)產(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)制表示形式表示絕對(duì)值x所需的位數(shù); x必須是一個(gè)Int或一個(gè)Unknown。如果x未知,則結(jié)果為0。
func BoolVal(x Value) bool
BoolVal返回x的Go布爾值,它必須是Bool或Unknown。如果x是未知的,結(jié)果是錯(cuò)誤的。
func Bytes(x Value) []byte
Bytes以little-endian二進(jìn)制表示形式返回x的絕對(duì)值的字節(jié); x必須是一個(gè)Int。
func Compare(x_ Value, op token.Token, y_ Value) bool
Compare返回比較結(jié)果x op y。必須為操作數(shù)定義比較。如果其中一個(gè)操作數(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ù)雜的。對(duì)于太小(太接近于0)的值來表示為float64,F(xiàn)loat64Val將靜默下溢到0.結(jié)果符號(hào)始終與x的符號(hào)匹配,即使為0.如果x為“未知”,則結(jié)果為(0,false)。
func Int64Val(x Value) (int64, bool)
Int64Val返回x的Go int64值以及結(jié)果是否準(zhǔn)確; x必須是一個(gè)Int或一個(gè)Unknown。如果結(jié)果不準(zhǔn)確,則其值不確定。如果x是未知的,結(jié)果是(0,false)。
func Sign(x Value) int
取決于x <0,x == 0還是x> 0,符號(hào)返回-1,0或1; x必須是數(shù)字或未知。對(duì)于復(fù)數(shù)值x,如果x == 0,則符號(hào)為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必須是一個(gè)Int或一個(gè)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ù)定義。如果其中一個(gè)操作數(shù)為“未知”,則結(jié)果為“未知”。BinaryOp不處理比較或轉(zhuǎn)換; 使用Compare或Shift來代替。
要強(qiáng)制Int操作數(shù)的整數(shù)除法,請(qǐng)使用op == token.QUO_ASSIGN而不是token.QUO; 在這種情況下結(jié)果保證為Int。除以零引起運(yùn)行時(shí)恐慌。
func Denom(x Value) Value
Denom返回x的分母; x必須是Int,F(xiàn)loat或Unknown。如果x是未知的,或者如果它太大或太小而不能表示為分?jǐn)?shù),則結(jié)果為未知。否則結(jié)果是一個(gè)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值。一個(gè)空的字節(jié)切片參數(shù)代表0。
func MakeFromLiteral(lit string, tok token.Token, zero uint) Value
MakeFromLiteral為Go文字字符串返回相應(yīng)的整數(shù),浮點(diǎn)數(shù),虛數(shù),字符或字符串值。tok值必須是token.INT,token.FLOAT,token.IMAG,token.CHAR或token.STRING中的一個(gè)。最后的論點(diǎn)必須是零。如果文字字符串語法無效,則結(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相同符號(hào)的Int。
func Real(x Value) Value
實(shí)數(shù)返回x的實(shí)數(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必須是一個(gè)Int或一個(gè)Unknown。如果x是未知的,結(jié)果是x。
func ToComplex(x Value) Value
ToComplex將x轉(zhuǎn)換為Complex值,如果x可表示為Complex。否則它返回一個(gè)未知。
func ToFloat(x Value) Value
ToFloat將x轉(zhuǎn)換為Float值(如果x可表示為Float)。否則它返回一個(gè)未知。
func ToInt(x Value) Value
如果x可表示為Int,ToInt將x轉(zhuǎn)換為Int值。否則它返回一個(gè)未知。
func UnaryOp(op token.Token, y Value, prec uint) Value
UnaryOp返回一元表達(dá)式op y的結(jié)果。該操作必須為操作數(shù)定義。如果prec> 0,則它以位為單位指定^(異或)結(jié)果大小。如果y未知,則結(jié)果為未知。