我有Product带字段的模型Type。像这样的东西:type ProductType stringvar (    PtRouteTransportation    ProductType = "ProductRT"    PtOnDemandTransportation ProductType = "ProductDT"    PtExcursion              ProductType = "ProductEX"    PtTicket                 ProductType = "ProductTK"    PtQuote                  ProductType = "ProductQT"    PtGood                   ProductType = "ProductGD")type Product struct {    ...    Type ProductType    ...}在Create函数中,我有type表单参数:type := req.Form.Get("type")问题:如何检查是否type有效?最简单的方法是:if type != PtRouteTransportation && type != PtOnDemandTransportation && ...但是如果Product有 100 种类型,我该怎么办?如何以这种go方式做到这一点?
                    
                    
                2 回答
                            慕仙森
                            
                                
                            
                        
                        
                                                
                    TA贡献1827条经验 获得超8个赞
真正最简单的是使用映射,不像常量那么快,但是如果您必须针对大集合进行测试,这是最方便的方法。
此外,由于它是预先分配的,因此它是线程安全的,因此您不必担心锁定,除非您在运行时添加它。
var (
ptTypes = map[string]struct{}{
"ProductRT": {},
"ProductDT": {},
"ProductEX": {},
"ProductTK": {},
"ProductQT": {},
"ProductGD": {},
}
)
func validType(t string) (ok bool) {
_, ok = ptTypes[t]
return
}
- 2 回答
 - 0 关注
 - 209 浏览
 
添加回答
举报
0/150
	提交
		取消
	