Skip to content

Latest commit

 

History

History
91 lines (65 loc) · 1.95 KB

15 结构体.md

File metadata and controls

91 lines (65 loc) · 1.95 KB

结构体

Solidity支持结构体,用户可以自定义结构体类型。

示例

结构体定义

pragma solidity ^0.8.4;

contract Bank {
 struct Account {
 address owner;
        uint256 balance;
    }
 function createAccount() public {
        Account memory newAccount = Account(msg.sender, 0);
    }
    
}

在上面的例子中,我们定义了名为“Account”的结构体,它有两个成员:ownerbalance。在 createAccount 函数中,我们使用Account 类型创建了一个名为newAccount的新变量。

结构体初始化

pragma solidity ^0.8.4;

contract Bank {
 struct Account {
        address owner;
        uint256 balance;
    }
 function createAccount() public {
        Account memory newAccount = Account({
            owner: msg.sender,
            balance: 0
        });
 }
    
}

在这个例子中,我们使用带标记语法初始化结构体。用这种方法,我们可以在任意顺序下为结构体的所有成员指定值。

结构体作为参数

pragma solidity ^0.8.4;

contract Bank {
    
    struct Account {
        address owner;
        uint256 balance;
    }
    
    function deposit(Account storage account, uint256 amount) public {
        account.balance += amount;
    }
    
}

在这个例子中,我们传递了一个指向Account类型的指针,并在函数内部修改了结构的成员。

结构体数组

pragma solidity ^0.8.4;

contract Bank {
    
    struct Account {
        address owner;
        uint256 balance;
    }
    
    Account[] accounts;
 function createAccount() public {
        accounts.push(Account({
            owner: msg.sender,
            balance: 0 }));
    }
    
}

在这个例子中,我们定义了一个结构体数组。 createAccount 函数向数组添加一个新的结构体。数组可以使用常规的数组语法访问accounts [i].owneraccounts [i].balance