本文整理汇总了Golang中code/google/com/p/rsc/cc.Type.String方法的典型用法代码示例。如果您正苦于以下问题:Golang Type.String方法的具体用法?Golang Type.String怎么用?Golang Type.String使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类code/google/com/p/rsc/cc.Type
的用法示例。
在下文中一共展示了Type.String方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: zeroFor
func zeroFor(targ *cc.Type) *cc.Expr {
if targ != nil {
k := targ.Def().Kind
switch k {
case c2go.String:
return &cc.Expr{Op: cc.String, Texts: []string{`""`}}
case c2go.Slice, cc.Ptr:
return &cc.Expr{Op: cc.Name, Text: "nil"}
case cc.Struct, cc.Array:
return &cc.Expr{Op: cc.CastInit, Type: targ, Init: &cc.Init{}}
case c2go.Bool:
return &cc.Expr{Op: cc.Name, Text: "false"}
}
if c2go.Int8 <= k && k <= c2go.Float64 {
return &cc.Expr{Op: cc.Number, Text: "0"}
}
return &cc.Expr{Op: cc.Number, Text: "0 /*" + targ.String() + "*/"}
}
return &cc.Expr{Op: cc.Number, Text: "0 /*untyped*/"}
}
示例2: printType
func (p *Printer) printType(t *cc.Type) {
// Shouldn't happen but handle in case it does.
p.Print(t.Comments.Before)
defer p.Print(t.Comments.Suffix, t.Comments.After)
if t == cc.BoolType {
p.Print("bool")
return
}
if typemap[t.Kind] != "" {
p.Print(typemap[t.Kind])
return
}
switch t.Kind {
default:
p.Print(t.String()) // hope for the best
case cc.TypedefType:
if typemap[t.Base.Kind] != "" && strings.ToLower(t.Name) == t.Name {
p.Print(typemap[t.Base.Kind])
return
}
p.Print(t.Name)
case cc.Ptr:
if t.Base.Is(cc.Func) {
p.Print(t.Base)
return
}
p.Print("*", t.Base)
case cc.Func:
p.Print("func(")
for i, arg := range t.Decls {
if i > 0 {
p.Print(", ")
}
if arg.Name == "..." {
p.Print("...interface{}")
continue
}
p.Print(arg.Type)
}
p.Print(")")
if !t.Base.Is(cc.Void) {
p.Print(" ", t.Base)
}
case cc.Array:
if t.Width == nil {
p.Print("[]", t.Base) // TODO
return
}
p.Print("[", t.Width, "]", t.Base)
}
}
示例3: printType
func (p *Printer) printType(t *cc.Type) {
if t == nil {
p.Print("<nil type>")
return
}
// Shouldn't happen but handle in case it does.
p.Print(t.Comments.Before)
defer p.Print(t.Comments.Suffix, t.Comments.After)
if t == cc.BoolType {
p.Print("bool")
return
}
if typemap[t.Kind] != "" {
p.Print(typemap[t.Kind])
return
}
switch t.Kind {
default:
p.Print("C.", t.String()) // hope for the best
case Slice:
p.Print("[]", t.Base)
case String:
p.Print("string")
case cc.Struct:
if len(t.Decls) == 0 {
p.Print("struct{}")
break
}
p.Print("struct {", Indent)
p.printStructBody(t)
p.Print(Unindent, Newline, "}")
case cc.Enum:
if t.Tag != "" {
p.Print(t.Tag)
} else {
p.Print("int")
}
case cc.TypedefType:
if t.Base != nil && typemap[t.Base.Kind] != "" && strings.ToLower(t.Name) == t.Name {
p.Print(typemap[t.Base.Kind])
return
}
if t.TypeDecl != nil && t.TypeDecl.GoPackage != "" && p.Package != "" && t.TypeDecl.GoPackage != p.Package {
p.Print(path.Base(t.TypeDecl.GoPackage) + "." + t.Name)
break
}
p.Print(t.Name)
case cc.Ptr:
if t.Base.Is(cc.Func) {
p.Print(t.Base)
return
}
if t.Base.Is(cc.Void) {
p.Print("*[0]byte")
return
}
p.Print("*", t.Base)
case cc.Func:
p.Print("func(")
for i, arg := range t.Decls {
if i > 0 {
p.Print(", ")
}
if arg.Name == "..." {
p.Print("...interface{}")
continue
}
if arg.Name == "" && arg.Type.Is(cc.Void) {
continue
}
p.Print(arg.Type)
}
p.Print(")")
if !t.Base.Is(cc.Void) {
p.Print(" ", t.Base)
}
case cc.Array:
if t.Width == nil {
p.Print("[XXX]", t.Base)
return
}
p.Print("[", t.Width, "]", t.Base)
}
}