It looks like the net package does it all for you.
package main
import (
"net"
"testing"
)
type item struct {
addr string
cidr string
matches bool
}
var testdata = []item{
}
func TestCIDRMatch(t *testing.T) {
for _, it := range testdata {
_, cidrnet, err := net.ParseCIDR(it.cidr)
if err != nil {
panic(err) // assuming I did it right above
}
myaddr := net.ParseIP(it.addr)
if cidrnet.Contains(myaddr) != it.matches {
t.Fatalf("Wrong on %+v")
}
}
}