add defer

关于defer，反而更重要是要理解return。
return x 不是一条语句，而是2条语句。
x 会放到棧内，defer 如果操作了这个值，则返回值回被更改。