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


Golang Object.Orig方法代码示例

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


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

示例1: tokenOf

func tokenOf(o types.Object) string {
	switch o := o.(type) {
	case *types.Func:
		return "func"
	case *types.Var:
		return "var"
	case *types.TypeName:
		return "type"
	case *types.Const:
		return "const"
	case *types.PkgName:
		return "package"
	case *types.Builtin:
		return "builtin" // e.g. when describing package "unsafe"
	case *types.Nil:
		return "nil"
	case *types.Label:
		return "label"
	case *types.Alias:
		if o.Orig() == nil {
			return "alias"
		}
		return tokenOf(o.Orig())
	}
	panic(o)
}
开发者ID:syreclabs,项目名称:go-tools,代码行数:26,代码来源:describe18.go

示例2: formatMember

func formatMember(obj types.Object, maxname int) string {
	qualifier := types.RelativeTo(obj.Pkg())
	var buf bytes.Buffer
	fmt.Fprintf(&buf, "%-5s %-*s", tokenOf(obj), maxname, obj.Name())
	switch obj := obj.(type) {
	case *types.Alias:
		buf.WriteString(" => ")
		if orig := obj.Orig(); orig != nil {
			fmt.Fprintf(&buf, "%s.%s", orig.Pkg().Name(), orig.Name())
		} else {
			buf.WriteByte('?')
		}

	case *types.Const:
		fmt.Fprintf(&buf, " %s = %s", types.TypeString(obj.Type(), qualifier), obj.Val())

	case *types.Func:
		fmt.Fprintf(&buf, " %s", types.TypeString(obj.Type(), qualifier))

	case *types.TypeName:
		// Abbreviate long aggregate type names.
		var abbrev string
		switch t := obj.Type().Underlying().(type) {
		case *types.Interface:
			if t.NumMethods() > 1 {
				abbrev = "interface{...}"
			}
		case *types.Struct:
			if t.NumFields() > 1 {
				abbrev = "struct{...}"
			}
		}
		if abbrev == "" {
			fmt.Fprintf(&buf, " %s", types.TypeString(obj.Type().Underlying(), qualifier))
		} else {
			fmt.Fprintf(&buf, " %s", abbrev)
		}

	case *types.Var:
		fmt.Fprintf(&buf, " %s", types.TypeString(obj.Type(), qualifier))
	}
	return buf.String()
}
开发者ID:syreclabs,项目名称:go-tools,代码行数:43,代码来源:describe18.go


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