Skip to content

Latest commit

 

History

History
65 lines (48 loc) · 901 Bytes

README.md

File metadata and controls

65 lines (48 loc) · 901 Bytes

scrub

Recursively set specific struct fields to their zero values

Possible use cases:

  • scrubbing sensitive data from structs before logging
  • comparing structs with noisy fields (timestamps, random values, etc) for testing or diagnostic purposes

Examples

Using struct tags

package main

import (
  "fmt"

  "github.com/acj/scrub"
)

type User struct {
  Name string
  Age  int    `scrub:"true"`
}

func main() {
  user := User{
    Name: "Wall-E",
    Age:  22,
  }
  scrub.TaggedFields(&user)
  fmt.Printf("%+v\n", user) // {Name:Wall-E Age:0}
}

Using named fields (blocklist)

package main

import (
  "fmt"

  "github.com/acj/scrub"
)

type User struct {
  Name string
  Age  int
}

func main() {
  user := User{
    Name: "Wall-E",
    Age:  22,
  }
  scrub.NamedFields(&user, "Age")
  fmt.Printf("%+v\n", user) // {Name:Wall-E Age:0}
}

License

MIT