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”的结构体,它有两个成员:owner
和balance
。在 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].owner
或accounts [i].balance
。