小编tbr*_*den的帖子

struct的映射的默认值是什么

地图中struct的默认值是多少?如何检查地图值是否已初始化?

type someStruct struct { 
    field1 int
    field2 string
}
var mapping map[int]someStruct

func main() {
    mapping := make(map[int]someStruct)
}

func check(key int) {
    if mapping[key] == ? {}
}
Run Code Online (Sandbox Code Playgroud)

我应该检查nil还是someStruct{}

struct initialization default-value go go-map

2
推荐指数
1
解决办法
3451
查看次数

合同中应支付的坚固性建设者

我有以下代码出现故障,无法从另一个合同创建应付合同。

pragma solidity ^0.4.16;

Contract Factory {
    uint contractCount = 0;
    mapping(uint => MyContract) public myContracts;

    function createContract(uint money) external payable {
        require(msg.value >= money);
        contractCount++;
        // the following line fails
        myContracts[contractCount] = new MyContract(money);
    }
}

Contract MyContract {
    uint money;

    function MyContract(uint _money) {
        require(msg.value >= _money);
        money = _money;
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用 Remix IDE。我可以毫无问题地创建 Factory 实例,但是,当我尝试 createContract(money) 时,它无法创建新的 MyContract 实例。我怀疑这是因为调用的方式new MyContract()没有传输任何值,因此MyContract构造函数中的 require(msg.value >= _money) 失败。

那么如何从合约创建一个可支付构造函数的实例呢?

ethereum solidity smartcontracts

1
推荐指数
2
解决办法
2528
查看次数