// computeTypeSignature computes and returns the type signature for the given type. func computeTypeSignature(typedecl typegraph.TGTypeDecl) typeSignature { // We only need non-field members, as fields are never in interfaces. nonFieldMembers := typedecl.NonFieldMembers() staticSignatures := make([]memberSignature, 0, len(nonFieldMembers)) dynamicSignatures := make([]memberSignature, 0, len(nonFieldMembers)) for _, member := range nonFieldMembers { // We only need exported members as interfaces cannot contain or match // private members. if !member.IsExported() { continue } signature := computeMemberSignature(member) if signature.IsDynamic() { dynamicSignatures = append(dynamicSignatures, signature) } else { staticSignatures = append(staticSignatures, signature) } } return typeSignature{staticSignatures, dynamicSignatures} }