結構體
結構體是一種可以自行定義的數據類型,其結構體內是復合的數據類型結構,當單一數據類型不能滿足時可以使用創建所需結構體。
結構體定義使用 struct,例如以下示例:
struct Human{uint age;string name;uint height;}
以上代碼中使用 struct 定義結構體,在此不必使用 public 進行修飾,因為 Human 這個結構體是一種數據類型的抽象,使用 public 毫無意義。
其結構體內包含 uint 的 age 和 height 變量數據,以及一個 string 類型的 name 數據,這意味著,在之后的使用中,Human 這個類型的結構體變量可使用其中的數據,例如 age 、name 和height。
接著可以創建對應的結構體 Human 類型的變量,就像創建一個 uint 變量一樣簡單:
Human public XiaoMing;
Human public XiaoHong;
此時直接將創建的結構體 Human 當做一種數據類型即可。
使用時直接使用 點運算符 . 對其中的屬性進行賦值或者取值即可:
XiaoHong.age=18;
XiaoHong.name="XiaoHong";
XiaoHong.height=170;
那么此時創建一個合約,完整的結構體賦值操作如下:
// 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);}
}