Skip to content

Commit c7e48de

Browse files
committed
fix: skip omited tag
Change-Id: Id5bcf973de5404551a8f3d9f177d16c01de8ee44
1 parent 5ff4a5a commit c7e48de

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,5 @@ _testmain.go
3030

3131
# idea ignore
3232
.idea/
33+
34+
.vscode/

tagexpr.go

+13-5
Original file line numberDiff line numberDiff line change
@@ -286,11 +286,15 @@ func (vm *VM) registerStructLocked(structType reflect.Type) (*structVM, error) {
286286
var sub *structVM
287287
for i := 0; i < numField; i++ {
288288
structField = structType.Field(i)
289-
field, err := s.newFieldVM(structField)
289+
field, ok, err := s.newFieldVM(structField)
290290
if err != nil {
291291
s.err = err
292292
return nil, err
293293
}
294+
// skip omited tag
295+
if !ok {
296+
continue
297+
}
294298
switch field.elemKind {
295299
default:
296300
field.setUnsupportGetter()
@@ -410,16 +414,20 @@ func (vm *VM) newStructVM() *structVM {
410414
}
411415
}
412416

413-
func (s *structVM) newFieldVM(structField reflect.StructField) (*fieldVM, error) {
417+
func (s *structVM) newFieldVM(structField reflect.StructField) (*fieldVM, bool, error) {
418+
var tag = structField.Tag.Get(s.vm.tagName)
419+
if tag == tagOmit {
420+
return nil, false, nil
421+
}
414422
f := &fieldVM{
415423
structField: structField,
416424
exprs: make(map[string]*Expr, 8),
417425
origin: s,
418426
fieldSelector: structField.Name,
419427
}
420-
err := f.parseExprs(structField.Tag.Get(s.vm.tagName))
428+
err := f.parseExprs(tag)
421429
if err != nil {
422-
return nil, err
430+
return nil, false, err
423431
}
424432
s.fields[f.fieldSelector] = f
425433
s.fieldSelectorList = append(s.fieldSelectorList, f.fieldSelector)
@@ -450,7 +458,7 @@ func (s *structVM) newFieldVM(structField reflect.StructField) (*fieldVM, error)
450458
return v
451459
}
452460

453-
return f, nil
461+
return f, true, nil
454462
}
455463

456464
func (f *fieldVM) ensureInit(v reflect.Value) {

0 commit comments

Comments
 (0)