本文整理汇总了Golang中github.com/gopherjs/gopherjs/js.Object.Unsafe方法的典型用法代码示例。如果您正苦于以下问题:Golang Object.Unsafe方法的具体用法?Golang Object.Unsafe怎么用?Golang Object.Unsafe使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/gopherjs/gopherjs/js.Object
的用法示例。
在下文中一共展示了Object.Unsafe方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: makeValue
func makeValue(t Type, v *js.Object, fl flag) Value {
rt := t.common()
if t.Kind() == Array || t.Kind() == Struct || t.Kind() == Ptr {
return Value{rt, unsafe.Pointer(v.Unsafe()), fl | flag(t.Kind())}
}
return Value{rt, unsafe.Pointer(js.Global.Call("$newDataPointer", v, jsType(rt.ptrTo())).Unsafe()), fl | flag(t.Kind()) | flagIndir}
}
示例2: cvtDirect
func cvtDirect(v Value, typ Type) Value {
var srcVal = v.object()
if srcVal == jsType(v.typ).Get("nil") {
return makeValue(typ, jsType(typ).Get("nil"), v.flag)
}
var val *js.Object
switch k := typ.Kind(); k {
case Slice:
slice := jsType(typ).New(srcVal.Get("$array"))
slice.Set("$offset", srcVal.Get("$offset"))
slice.Set("$length", srcVal.Get("$length"))
slice.Set("$capacity", srcVal.Get("$capacity"))
val = js.Global.Call("$newDataPointer", slice, jsType(PtrTo(typ)))
case Ptr:
if typ.Elem().Kind() == Struct {
if typ.Elem() == v.typ.Elem() {
val = srcVal
break
}
val = jsType(typ).New()
copyStruct(val, srcVal, typ.Elem())
break
}
val = jsType(typ).New(srcVal.Get("$get"), srcVal.Get("$set"))
case Struct:
val = jsType(typ).Get("ptr").New()
copyStruct(val, srcVal, typ)
case Array, Bool, Chan, Func, Interface, Map, String:
val = js.InternalObject(v.ptr)
default:
panic(&ValueError{"reflect.Convert", k})
}
return Value{typ.common(), unsafe.Pointer(val.Unsafe()), v.flag&(flagRO|flagIndir) | flag(typ.Kind())}
}
示例3: makeValue
func makeValue(t Type, v js.Object, fl flag) Value {
rt := t.common()
if t.Size() > ptrSize && t.Kind() != Array && t.Kind() != Struct {
return Value{rt, unsafe.Pointer(js.Global.Call("go$newDataPointer", v, jsType(rt.ptrTo())).Unsafe()), fl | flag(t.Kind())<<flagKindShift | flagIndir}
}
return Value{rt, unsafe.Pointer(v.Unsafe()), fl | flag(t.Kind())<<flagKindShift}
}
示例4: makeValue
func makeValue(t Type, v js.Object, fl flag) Value {
rt := t.common()
if t.Kind() == Array || t.Kind() == Struct || rt.pointers() {
return Value{rt, unsafe.Pointer(v.Unsafe()), 0, fl | flag(t.Kind())<<flagKindShift}
}
if t.Size() > ptrSize || t.Kind() == String {
return Value{rt, unsafe.Pointer(js.Global.Call("$newDataPointer", v, jsType(rt.ptrTo())).Unsafe()), 0, fl | flag(t.Kind())<<flagKindShift | flagIndir}
}
return Value{rt, nil, uintptr(unsafe.Pointer(v.Unsafe())), fl | flag(t.Kind())<<flagKindShift}
}
示例5: makeIword
func makeIword(t Type, v js.Object) iword {
if t.Size() > ptrSize && t.Kind() != Array && t.Kind() != Struct {
return iword(js.Global.Call("go$newDataPointer", v, jsType(PtrTo(t))).Unsafe())
}
return iword(v.Unsafe())
}
示例6: makePointer
func makePointer(t Type, v js.Object) unsafe.Pointer {
if t.Size() > ptrSize && t.Kind() != Array && t.Kind() != Struct {
return unsafe.Pointer(js.Global.Call("$newDataPointer", v, jsType(PtrTo(t))).Unsafe())
}
return unsafe.Pointer(v.Unsafe())
}