自定义结构体。
struct Custom{
bool myBool;
uint myInt;
}
结构体内部不可以嵌套。
struct Custom{
bool myBool;
uint myInt;
Custom c;
}
上面的写法是错误的,但是下面的写法是可以的。
struct Custom{
mapping(string => Custom) indexs;
}
声明与初始化
- 仅声明变量,不初始化
Custom c;
- 按成员顺序初始化
Custom c = Custom(true,2);
- 如果结构体成员里面有
mapping
- 初始化的时候要跳过
struct Custom{
bool myBool;
mapping(address => uint) balance;
uint myInt;
}
初始化
Custom c = Custom(true,2); // 跳过 mapping
命名方式初始化
Custom c = Custom({myBool: true,myInt:2});
这个方法可以不同顺序初始化,参数数量需要一致,同样忽略 mapping
访问与赋值
Custom c;
c.myBool = true;
限制
结构体仅支持合约内部使用或者继承合约使用。
如果要在参数和返回值中使用结构体,函数必须声明 internal
,当然在新版本中可能限制就解除了。
function interFunc(Custom c) internal{}