背景
之前的文章我们已经介绍了Move的模块和函数,接下来将会介绍一些Move的特性。
结构体
结构体是用户自定义的拥有复杂数据的数据类型,它可以简单理解为一个key——value形式的存储器,key时存储数据的名字而value是其存储的值。
结构体的定义
结构体只能在模块里定义,一struct关键字开头,之后时名字和双括号,双括号里面是是定义:
struct Name {
FIELD1: TYPE1,
FIELD@: TYPE2,
......
}
以下就是结构体定义的例子:
module M {
struct Empty{}
struct MyStruct{
field1: address,
field2: bool,
field3: Empty
}
struct Example {
field1: u8,
field2: address,
field3: u64,
field4: bool,
field5: bool,
field5: MyStruct
}
}
需要注意的是每一个定义的结构体都会变成一个新的类型,这个类型可以桶模块访问,如M::MyStruct。
递归定义在Move是不允许的,例如以下代码编译会报错:
struct MyStruct{
field5: MyStruct
}
结构体的使用
我们可以通过创建实例来使用结构体,可以通过