NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
>[info] go_service 运行测试文件 * **代码:** ~~~ package deliveryHitConfig import ( "comm/define" "context" "fmt" "testing" "time" ) func TestMok(t *testing.T) { testMok() } func testMok() { // 创建条件构建器 conditionBuilder := NewConditionBuilder() var ( tmpCondition []Condition tmpCondition2 []Condition // 创建匹配器 matcher = NewConfigMatcher(context.Background(), nil) ) fmt.Println("开始", time.Now().UnixNano()) tmpCondition = append(tmpCondition, conditionBuilder.Atomic(1, define.EvaluateContains, `["19710"]`)) tmpCondition = append(tmpCondition, conditionBuilder.Atomic(4, define.EvaluateBetween, `["6", "100"]`)) condition3 := conditionBuilder.And(tmpCondition...) tmpCondition2 = append(tmpCondition2, conditionBuilder.Atomic(1, define.EvaluateContains, `["6", "100"]`)) tmpCondition2 = append(tmpCondition2, conditionBuilder.Atomic(4, define.EvaluateBetween, `["6", "100"]`)) condition2 := conditionBuilder.And(tmpCondition2...) //condition3 := conditionBuilder.And( // conditionBuilder.And( // tmpCondition1..., // ), // conditionBuilder.And( // tmpCondition2..., // ), //) //condition := conditionBuilder.And(condition3) // 配置1: 快递配送配置 config1 := NewConfigBuilder(uint64(1)). SetCondition( condition3, ).Build() // 添加配置到匹配器 matcher.AddConfig(config1) // 配置1: 快递配送配置 config2 := NewConfigBuilder(uint64(2)). SetCondition( condition2, ).Build() // 添加配置到匹配器 matcher.AddConfig(config2) //for i := 0; i < 200; i++ { // tmpCondition1 := append(tmpCondition, conditionBuilder.Atomic(4, define.EvaluateContains, `["6", "12"]`)) // tmpCondition2 := append(tmpCondition, conditionBuilder.Atomic(4, define.EvaluateContains, `["6", "12"]`)) // // condition3 := conditionBuilder.And( // conditionBuilder.And( // tmpCondition1..., // ), // conditionBuilder.And( // tmpCondition2..., // ), // ) // // if i == 188 { // tmpCondition1 = append(tmpCondition, conditionBuilder.Atomic(1, define.EvaluateContains, `["6", "12"]`)) // tmpCondition2 = append(tmpCondition, conditionBuilder.Atomic(4, define.EvaluateBetween, `["50.4", "55"]`)) // // condition3 = conditionBuilder.And( // conditionBuilder.And( // tmpCondition1..., // ), // conditionBuilder.And( // tmpCondition2..., // ), // ) // } // // condition := conditionBuilder.And(condition3) // // 配置1: 快递配送配置 // config1 := NewConfigBuilder(uint64(i)). // SetCondition( // condition, // ).Build() // // // 添加配置到匹配器 // matcher.AddConfig(config1) //} fmt.Println("开始1", time.Now().UnixNano()) //config2 := NewConfigBuilder(222). // SetCondition( // condition2, // ).Build() //matcher.AddConfig(config2) // 构建因子 factors := NewFactorBuilder(). Add(1, []string{"19730"}). Add(2, "17"). Add(3, []string{"好", "a"}). Add(4, "51.5"). Build() // 匹配配置 matchedConfig := matcher.Match(factors) if matchedConfig != nil { fmt.Printf("命中配置: ID=%d", matchedConfig.ID) } else { fmt.Println("未命中任何配置") } fmt.Println("结束", time.Now().UnixNano()) now := time.Now() fmt.Println(fmt.Sprintf("%02d%02d%02d", now.Hour(), now.Minute(), now.Second())) } ~~~ * **运行:** ``` go test -run TestMok -v ``` * **效果:** ![](https://img.kancloud.cn/76/aa/76aa7e3b1295e584f9f89573e13df193_2940x1844.png)