关于智能合约中数组的问题

contract Donate{
uint size = 0;

struct DonateInfo{
    uint id;
    uint value;
    uint time;
}

DonateInfo[] public list;

/* function get(unit index) returns (DonateInfo){
DonateInfo result = list[index];
return result;

}*/
function lengthOf() returns (uint len) {
uint result = list.length;
return result;

}

function put(uint id, uint value, uint time) returns (uint len) {
   DonateInfo info;
  info.id =id;
  info.value=value;
  info.time=time;
   list.push(info);
    size++;
    return size;
}
 function valueOf(uint _index) returns (DonateInfo) {
DonateInfo result = list[_index];
return result;

}
}

上面是我写的智能合约,不知道为什么第一次调用PUT方法后,数组的长度就会是2,求大神拯救

http://blog.csdn.net/u013137970/article/details/53023115

http://baijiahao.baidu.com/s?id=1563765442545887&wfr=spider&for=pc

推荐个以太坊新手入门教程有关于智能合约的学习入门:http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180507csdn

DonateInfo[] public list;这个语句默认进行了初始化{ id=0,value=0,time=0}