七、数组及其操作《2022 solidity8.+ 版本教程到实战》

举报
1_bit 发表于 2022/09/25 07:43:21 2022/09/25
【摘要】 结构体 结构体是一种可以自行定义的数据类型,其结构体内是复合的数据类型结构,当单一数据类型不能满足时可以使用创建所需结构体。 结构体定义使用 struct,例如以下示例: struct Human{...

结构体

结构体是一种可以自行定义的数据类型,其结构体内是复合的数据类型结构,当单一数据类型不能满足时可以使用创建所需结构体。

结构体定义使用 struct,例如以下示例:

struct Human{
     uint age;
     string name;
     uint height;
 }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

以上代码中使用 struct 定义结构体,在此不必使用 public 进行修饰,因为 Human 这个结构体是一种数据类型的抽象,使用 public 毫无意义。

其结构体内包含 uint 的 age 和 height 变量数据,以及一个 string 类型的 name 数据,这意味着,在之后的使用中,Human 这个类型的结构体变量可使用其中的数据,例如 age 、name 和height。

接着可以创建对应的结构体 Human 类型的变量,就像创建一个 uint 变量一样简单:

Human public XiaoMing;
Human public XiaoHong;

  
 
  • 1
  • 2

此时直接将创建的结构体 Human 当做一种数据类型即可。

使用时直接使用 点运算符 . 对其中的属性进行赋值或者取值即可:

XiaoHong.age=18;
XiaoHong.name="XiaoHong";
XiaoHong.height=170;

  
 
  • 1
  • 2
  • 3

那么此时创建一个合约,完整的结构体赋值操作如下:

// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.6;
contract StructDemo{
    struct Human{
        uint age;
        string name;
        uint height;
    }
    Human public XiaoMing;
    Human public XiaoHong;
    function testStruct()external{
        XiaoHong.age=18;
        XiaoHong.name="XiaoHong";
        XiaoHong.height=170;

        XiaoMing.age=19;
        XiaoMing.name="XiaoMing";
        XiaoMing.height=172;

        Human memory XiaoLv=Human(20,"XiaoLv",168);
    }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

文章来源: i1bit.blog.csdn.net,作者:1_bit,版权归原作者所有,如需转载,请联系作者。

原文链接:i1bit.blog.csdn.net/article/details/126798482

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。