github.com/fortexxx/gqlgen@v0.10.3-0.20191216030626-ca5ea8b21ead/codegen/interface.gotpl (about) 1 {{- range $interface := .Interfaces }} 2 3 func (ec *executionContext) _{{$interface.Name}}(ctx context.Context, sel ast.SelectionSet, obj {{$interface.Type | ref}}) graphql.Marshaler { 4 switch obj := (obj).(type) { 5 case nil: 6 return graphql.Null 7 {{- range $implementor := $interface.Implementors }} 8 {{- if $implementor.ValueReceiver }} 9 case {{$implementor.Type | ref}}: 10 return ec._{{$implementor.Name}}(ctx, sel, &obj) 11 {{- end}} 12 case *{{$implementor.Type | ref}}: 13 if obj == nil { 14 return graphql.Null 15 } 16 return ec._{{$implementor.Name}}(ctx, sel, obj) 17 {{- end }} 18 default: 19 panic(fmt.Errorf("unexpected type %T", obj)) 20 } 21 } 22 23 {{- end }}