Solidity语法
数据类型(值类型)
uint
(unity, int), 整数型
可保存0, 以及正整数
范围: 2**256 - 1, 2的256次方
address
(地址类型, 是合约语言的特殊数据类型)
160位值, 不允许操作;
适合存储 合约地址 或外部人员密钥对
地址具有balance属性, 返回该帐户可用的以太币数量
- transfer, 转帐
- send, 返回布尔值, 转帐成功与否的信息
- Call
- DelegateCall
- Callcode
int
可以保存, 正负, 有符号整数
bool
true或false
byte
固定大小字节数组
枚举
数据类型(引用类型)
字符串
Solidity中, 字符串可以使用单引号或双引号, 类似Python.
映射
Solidity中映射与Go映射或相同. 但, 不允许遍历. 只能通过键获取值.
mapping(uint => address) Names;
以上声明过程中,
uint => address : 代表, 键为uint类型, 值为address类型.
Names: 作为映射的标识符.
存储值:
Names[uint(2)] = 0x5B38Da6a701c568545dCfcB03FcB875f56beddC4 获取值:
Names[uint(2)]`
数组
- 固定数组:
int[5] age;
- 动态数组:
int[] age;
结构
与Go中的结构体相同:
Go中无类, 类通过结构体实现. Solidity有合约(类似类), 结构体只保存变量
struct user {
string name;
uint age;
int id;
address addr;
}
关键字
public
放在类型后面, 变量名前面.
address public mydress
起到的作用:
在编译器进行编译的时候, 把该变量自动生成一个函数, 进行显示.
使该变量在合约外可进行调用.
constructor
一般放在合约内, 函数前.
合约在创建的时候运行, 其他的时间无法进行调用.
适合用于进行一些初始参数, 或常量的设置.
特殊变量
msg.data
(bytes
): 完整的 calldatamsg.sender
(address
): 消息发送者(当前调用)msg.sig
(bytes4
): calldata 的前 4 字节(也就是函数标识符)msg.value
(uint
): 随消息发送的 wei 的数量