当前位置: 首页>>代码示例>>Golang>>正文


Golang Value.InterfaceData方法代码示例

本文整理汇总了Golang中reflect.Value.InterfaceData方法的典型用法代码示例。如果您正苦于以下问题:Golang Value.InterfaceData方法的具体用法?Golang Value.InterfaceData怎么用?Golang Value.InterfaceData使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在reflect.Value的用法示例。


在下文中一共展示了Value.InterfaceData方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。

示例1: snapvalue

func snapvalue(w io.Writer, v reflect.Value) {
	var q string
	switch v.Kind() {

	case reflect.Bool: // Not addressable
		q = strconv.FormatBool(v.Bool())

	case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
		q = strconv.FormatInt(v.Int(), 36)

	case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
		q = strconv.FormatUint(v.Uint(), 36)

	case reflect.Uintptr:
		panic("n/s")

	case reflect.Float32, reflect.Float64:
		q = strconv.FormatFloat(v.Float(), 'g', 65, 64)

	case reflect.Complex64, reflect.Complex128:
		c := v.Complex()
		q = "(" + strconv.FormatFloat(real(c), 'g', 65, 64) + ", " + strconv.FormatFloat(imag(c), 'g', 65, 64) + "i)"

	case reflect.Chan, reflect.Func, reflect.Map, reflect.Ptr, reflect.Slice, reflect.UnsafePointer: // Addressable
		q = strconv.FormatUint(uint64(v.Pointer()), 36) // uintptr

	case reflect.Interface:
		d := v.InterfaceData() // [2]uintptr
		q = "<" + strconv.FormatUint(uint64(d[0]), 36) + "," + strconv.FormatUint(uint64(d[1]), 36) + ">"

	case reflect.String:
		q = v.String()

	case reflect.Array:
		w.Write([]byte("{"))
		for i := 0; i < v.Len(); i++ {
			snapvalue(w, v.Index(i))
			w.Write([]byte(","))
		}
		w.Write([]byte("}"))
		return

	case reflect.Struct:
		w.Write([]byte("{"))
		for i := 0; i < v.NumField(); i++ {
			snapvalue(w, v.FieldByIndex([]int{i}))
			w.Write([]byte(","))
		}
		w.Write([]byte("}"))

	default:
		panic("u")
	}
	w.Write([]byte(q))
}
开发者ID:herokai,项目名称:circuit,代码行数:55,代码来源:hash.go


注:本文中的reflect.Value.InterfaceData方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。