地图中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{}?
我有以下代码出现故障,无法从另一个合同创建应付合同。
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) 失败。
那么如何从合约创建一个可支付构造函数的实例呢?