github.com/traefik/yaegi@v0.15.1/interp/typestring.go (about)

     1  package interp
     2  
     3  import "strings"
     4  
     5  func paramsTypeString(params []*itype) string {
     6  	strs := make([]string, 0, len(params))
     7  	for _, param := range params {
     8  		strs = append(strs, param.str)
     9  	}
    10  	return strings.Join(strs, ",")
    11  }
    12  
    13  func methodsTypeString(fields []structField) string {
    14  	strs := make([]string, 0, len(fields))
    15  	for _, field := range fields {
    16  		if field.embed {
    17  			str := methodsTypeString(field.typ.field)
    18  			if str != "" {
    19  				strs = append(strs, str)
    20  			}
    21  			continue
    22  		}
    23  		strs = append(strs, field.name+field.typ.str[4:])
    24  	}
    25  	return strings.Join(strs, "; ")
    26  }
    27  
    28  func fieldsTypeString(fields []structField) string {
    29  	strs := make([]string, 0, len(fields))
    30  	for _, field := range fields {
    31  		var repr strings.Builder
    32  		if !field.embed {
    33  			repr.WriteString(field.name)
    34  			repr.WriteByte(' ')
    35  		}
    36  		repr.WriteString(field.typ.str)
    37  		strs = append(strs, repr.String())
    38  	}
    39  	return strings.Join(strs, "; ")
    40  }