go包的设计
目前go的包设计是一个文件夹就是一个包,包内部若要进一步划分,则必须建立子文件夹。
这种设计有点小缺陷:
- 搞的子文件夹多
- 如果不搞子文件夹则搞前缀区分,前缀的噪音太大,代码不美观
我有个提议,你们觉得这种设计美观不。
下面是一个test数据库的orderInfo表的entity文件,包含了表的结构和表字段的枚举示例。
package TestDbEntity.OrderInfo
type Table struct {
OrderNo int64 `json:"orderNo" orm:"order_no" ` // 订单号
UserId int `json:"userId" orm:"user_id" ` // 用户UID
ProductId int `json:"productId" orm:"product_id" ` // 产品ID
OrderStatus int `json:"orderStatus" orm:"order_status" ` // 订单状态 [未付款:0,已付款:1,已失效:2,已退款:3,退款申请:4,退款中:5,已取消:6]
}
type OrderStatus int
const OrderStatusPayNo OrderStatus = 0
const OrderStatusPayYes OrderStatus = 1
const OrderStatusInvalid OrderStatus = 2
const OrderStatusRefundYes OrderStatus = 3
const OrderStatusRefundApply OrderStatus = 4
const OrderStatusRefundGo OrderStatus = 5
const OrderStatusCancel OrderStatus = 6
func (c OrderStatus) String() string {
switch c {
case OrderStatusPayNo:
return "未付款"
case OrderStatusPayYes:
return "已付款"
case OrderStatusInvalid:
return "已失效"
case OrderStatusRefundYes:
return "已退款"
case OrderStatusRefundApply:
return "退款申请"
case OrderStatusRefundGo:
return "退款中"
case OrderStatusCancel:
return "已取消"
default:
return "未知类型"
}
}
外部代码调用这个包的示例:
//初始化表
table := TestDbEntity.OrderInfo.Table {
OrderNo: 6636,
}
//打印枚举值
fmt.Println(TestDbEntity.OrderInfo.OrderStatusPayNo.String())
推荐文章: