Skip to content

Commit aa14188

Browse files
Merge pull request #4 from chenmingyong0423/feature/generic
支持泛型参数
2 parents 4d27c11 + 5e0f259 commit aa14188

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed

options/options_generator.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@ package options
1717
import (
1818
"bytes"
1919
"fmt"
20-
"github.com/chenmingyong0423/gkit/stringx"
21-
"github.com/chenmingyong0423/go-optioner/templates"
2220
"go/ast"
2321
"go/build"
2422
"go/format"
@@ -30,6 +28,9 @@ import (
3028
"reflect"
3129
"strconv"
3230
"strings"
31+
32+
"github.com/chenmingyong0423/gkit/stringx"
33+
"github.com/chenmingyong0423/go-optioner/templates"
3334
)
3435

3536
type Generator struct {
@@ -226,6 +227,8 @@ func (g *Generator) getTypeName(expr ast.Expr) string {
226227
return g.parseFuncType(t)
227228
case *ast.ChanType:
228229
return "chan " + g.getTypeName(t.Value)
230+
case *ast.UnaryExpr:
231+
return "~" + g.getTypeName(t.X)
229232
default:
230233
log.Fatalf("Unsupported type for field: %T", t)
231234
return ""

templates/options_templates.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ func New{{ .StructName }}{{if .GenericParams}}[{{range $index, $param := .Generi
4646
4747
{{ if .OptionalFields }}
4848
{{ range $field := .OptionalFields }}
49-
func With{{ $field.Name | capitalizeFirstLetter }}{{if $.GenericParams}}[{{range $index, $param := $.GenericParams}}{{if $index}}, {{end}}{{$param.Name}} {{$param.Type}}{{end}}]{{end}}({{ $field.Name | bigCamelToSmallCamel }} {{ $field.Type }}) {{ $.StructName }}Option {
50-
return func({{ $.NewStructName }} *{{ $.StructName }}) {
49+
func With{{ $field.Name | capitalizeFirstLetter }}{{if $.GenericParams}}[{{range $index, $param := $.GenericParams}}{{if $index}}, {{end}}{{$param.Name}} {{$param.Type}}{{end}}]{{end}}({{ $field.Name | bigCamelToSmallCamel }} {{ $field.Type }}) {{ $.StructName }}Option{{if $.GenericParams}}[{{range $index, $param := $.GenericParams}}{{if $index}}, {{end}}{{$param.Name}}{{end}}]{{end}} {
50+
return func({{ $.NewStructName }} *{{ $.StructName }}{{if $.GenericParams}}[{{range $index, $param := $.GenericParams}}{{if $index}}, {{end}}{{$param.Name}}{{end}}]{{end}}) {
5151
{{ $.NewStructName }}.{{ $field.Name }} = {{ $field.Name | bigCamelToSmallCamel }}
5252
}
5353
}

0 commit comments

Comments
 (0)