📜  Solidity-结构(1)

📅  最后修改于: 2023-12-03 15:20:11.046000             🧑  作者: Mango

Solidity-结构

Solidity是Ethereum平台上的一种编程语言,用来编写智能合约。智能合约是一个自动执行的合约,其中包括了双方协议的所有条件,一旦条件满足,自动执行合约。Solidity语言结构的讲解如下。

声明

在Solidity中,可用的声明有变量、函数、结构体、枚举和事件。

变量声明

变量是存储数据的容器。在Solidity中声明变量的语法如下:

datatype variable_name;

其中datatype是声明的变量的数据类型,variable_name是变量的名称。例如:

uint256 balance;
函数声明

函数是一段执行特定任务的代码。在Solidity中声明函数的语法如下:

function function_name(parameter1, parameter2, ...) public/private returns (return_datatype) {  //函数体 }

其中,function_name是函数的名称,parameter1, parameter2, ...是函数的参数列表,public/private是函数的可见性,returns (return_datatype)表示函数的返回值。例如:

function transfer(address receiver, uint amount) public returns (bool success) {
    //函数体
}
结构体声明

结构体是用于存储不同数据类型的值的自定义数据类型。在Solidity中声明结构体的语法如下:

struct StructName {
datatype1 variable1;
datatype2 variable2;
...
}

其中,StructName是结构体的名称,datatype1 variable1, datatype2 variable2是结构体中的变量。例如:

struct Persion{
string name;  //姓名
uint age;  //年龄
}
枚举声明

枚举是一种用于存储特定的固定值的数据类型。在Solidity中声明枚举的语法如下:

enum EnumName{
value1,
value2,
...
}

其中,EnumName是枚举的名称,value1, value2是枚举中的值。例如:

enum Gender{
male,
female
}
事件声明

事件是用于向外界传递广播通知的一种机制。在Solidity中声明事件的语法如下:

event EventName(parameters);

其中,EventName是事件的名称,parameters是事件的参数列表。例如:

event Transfer(address indexed _from, address indexed _to, uint _value);
数据类型

数据类型是一些标准数据类型和用户自定义数据类型的总称。Solidity支持的数据类型有布尔型、整型、地址类型、字符串类型和数组类型等。

布尔型

布尔型有两个值:true和false。在Solidity中,布尔型的声明语法如下:

bool variable_name = true/false;

例如:

bool is_authorized = true;
整型

整型是用来存储整数的数据类型。Solidity支持的整型有int8、int16、int32、int64、int128、int256和uint8、uint16、uint32、uint64、uint128、uint256。在Solidity中整型的声明语法如下:

int/uint bitsize variable_name;

其中bitsize表示整型的位数,variable_name是变量的名称。例如:

uint amount = 100;
地址类型

地址类型是存储以太坊地址的数据类型。在Solidity中,地址类型的声明语法如下:

address variable_name;

例如:

address owner = 0xD827Ead1e5f6D5e5E5F6dB5f6d5A1C3148F299AA;
字符串类型

字符串类型是用来存储字符串的数据类型。在Solidity中,字符串类型的声明语法如下:

string variable_name;

例如:

string message = "Hello world!";
数组类型

数组类型是用来存储多个相同数据类型的元素的数据类型。在Solidity中,数组类型的声明语法如下:

datatype[] variable_name;

其中,datatype是数组中元素的数据类型,variable_name是数组的名称。例如:

uint[] numbers = [10, 20, 30, 40, 50];
控制结构

控制结构是用于控制程序执行流程的结构。Solidity中的控制结构有if语句、for循环语句、while循环语句和do-while循环语句等。

if语句

if语句是用于当条件为true时执行代码块的结构。在Solidity中,if语句的语法如下:

if (condition1) {
    //代码块1
} else if (condition2) {
    //代码块2
} else {
    //代码块3
}

其中condition1, condition2是条件表达式,如果条件表达式为true,就会执行相应的代码块。

for循环语句

for循环语句是用于多次执行代码块的结构。在Solidity中,for循环语句的语法如下:

for (initialization; condition; increment/decrement) {
    //代码块
}

其中,initialization表示循环之前需要执行的一些代码,condition表示循环的条件,increment/decrement表示每次循环的增量/减量。

while循环语句

while循环语句是用于当条件为true时重复执行代码块的结构。在Solidity中,while循环语句的语法如下:

while (condition) {
    //代码块
}

其中,condition是条件表达式,如果条件表达式为true,就会重复执行相应的代码块。

do-while循环语句

do-while循环语句是用于当条件为true时重复执行代码块的结构,但是至少会执行一次。在Solidity中,do-while循环语句的语法如下:

do {
    //代码块
} while (condition);

其中,condition是条件表达式,如果条件表达式为true,就会重复执行相应的代码块,而且至少会执行一次。