@@ -263,14 +263,16 @@ func ParseWithOptions(v interface{}, opts Options) error {
263
263
// values from environment variables.
264
264
func ParseAs [T any ]() (T , error ) {
265
265
var t T
266
- return t , Parse (& t )
266
+ err := Parse (& t )
267
+ return t , err
267
268
}
268
269
269
270
// ParseWithOptions parses the given struct type containing `env` tags and
270
271
// loads its values from environment variables.
271
272
func ParseAsWithOptions [T any ](opts Options ) (T , error ) {
272
273
var t T
273
- return t , ParseWithOptions (& t , opts )
274
+ err := ParseWithOptions (& t , opts )
275
+ return t , err
274
276
}
275
277
276
278
// Must panic is if err is not nil, and returns t otherwise.
@@ -355,10 +357,10 @@ func doParseField(
355
357
if ! refField .CanSet () {
356
358
return nil
357
359
}
358
- if reflect . Ptr == refField . Kind () && refField .Elem ().Kind () == reflect .Struct && ! refField .IsNil () {
360
+ if refField . Kind () == reflect . Ptr && refField .Elem ().Kind () == reflect .Struct && ! refField .IsNil () {
359
361
return parseInternal (refField .Interface (), processField , optionsWithEnvPrefix (refTypeField , opts ))
360
362
}
361
- if reflect . Struct == refField . Kind () && refField .CanAddr () && refField .Type ().Name () == "" {
363
+ if refField . Kind () == reflect . Struct && refField .CanAddr () && refField .Type ().Name () == "" {
362
364
return parseInternal (refField .Addr ().Interface (), processField , optionsWithEnvPrefix (refTypeField , opts ))
363
365
}
364
366
@@ -384,7 +386,7 @@ func doParseField(
384
386
}
385
387
}
386
388
387
- if reflect . Struct == refField . Kind () {
389
+ if refField . Kind () == reflect . Struct {
388
390
return doParse (refField , processField , optionsWithEnvPrefix (refTypeField , opts ))
389
391
}
390
392
@@ -397,17 +399,17 @@ func doParseField(
397
399
398
400
func isSliceOfStructs (refTypeField reflect.StructField , opts Options ) bool {
399
401
field := refTypeField .Type
400
- if reflect . Ptr == field . Kind () {
402
+ if field . Kind () == reflect . Ptr {
401
403
field = field .Elem ()
402
404
}
403
405
404
- if reflect . Slice != field . Kind () {
406
+ if field . Kind () != reflect . Slice {
405
407
return false
406
408
}
407
409
408
410
field = field .Elem ()
409
411
410
- if reflect . Ptr == field . Kind () {
412
+ if field . Kind () == reflect . Ptr {
411
413
field = field .Elem ()
412
414
}
413
415
@@ -422,7 +424,7 @@ func isSliceOfStructs(refTypeField reflect.StructField, opts Options) bool {
422
424
}
423
425
424
426
if ! ignore {
425
- ignore = reflect . Struct != field . Kind ()
427
+ ignore = field . Kind () != reflect . Struct
426
428
}
427
429
return ! ignore
428
430
}
@@ -603,7 +605,7 @@ func get(fieldParams FieldParams, opts Options) (val string, err error) {
603
605
defer os .Unsetenv (fieldParams .Key )
604
606
}
605
607
606
- if fieldParams .Required && ! exists && len ( fieldParams .OwnKey ) > 0 {
608
+ if fieldParams .Required && ! exists && fieldParams .OwnKey != "" {
607
609
return "" , newVarIsNotSetError (fieldParams .Key )
608
610
}
609
611
@@ -638,7 +640,7 @@ func getFromFile(filename string) (value string, err error) {
638
640
return string (b ), err
639
641
}
640
642
641
- func getOr (key , defaultValue string , defExists bool , envs map [string ]string ) (val string , exists bool , isDefault bool ) {
643
+ func getOr (key , defaultValue string , defExists bool , envs map [string ]string ) (val string , exists , isDefault bool ) {
642
644
value , exists := envs [key ]
643
645
switch {
644
646
case (! exists || key == "" ) && defExists :
@@ -794,7 +796,7 @@ func handleMap(field reflect.Value, value string, sf reflect.StructField, funcMa
794
796
}
795
797
796
798
func asTextUnmarshaler (field reflect.Value ) encoding.TextUnmarshaler {
797
- if reflect . Ptr == field . Kind () {
799
+ if field . Kind () == reflect . Ptr {
798
800
if field .IsNil () {
799
801
field .Set (reflect .New (field .Type ().Elem ()))
800
802
}
0 commit comments