这是原版，使用结构体的情况