基本概念Solidity是一种用于编写以太坊智能合约的高级编程语言。在Solidity中,数据类型分为值类型(基本数据类型)和引用类型。
Solidity 是一种用于编写以太坊智能合约的高级编程语言。在 Solidity 中,数据类型分为值类型(基本数据类型)和引用类型。理解这些数据类型及其使用场景是编写高效、安全智能合约的基础。本文将详细介绍 Solidity 中的值类型和引用类型,并通过示例说明它们的使用场景。
值类型在赋值或传递时总是按值拷贝,而不是按引用。修改拷贝的值不会影响原始值。
bool
true
或 false
bool isReady = true;
bool isFinished = false;
<!---->
int8
到 int256
,以 8 位为步长(如 int8
, int16
, ..., int256
)。int
是 int256
的别名。int256 a = -10;
int b = 20; // int 是 int256 的别名
<!---->
<!---->
uint8
到 uint256
,以 8 位为步长(如 uint8
, uint16
, ..., uint256
)。uint
是 uint256
的别名。uint256 c = 100;
uint d = 200; // uint 是 uint256 的别名
<!---->
address
:存储 20 字节的以太坊地址。address payable
:与 address
类似,但可以接收以太币(ether
)。<!---->
address user = 0x1234567890123456789012345678901234567890;
address payable recipient = payable(user);
bytes1
到 bytes32
bytes32 hash = keccak256("Hello, Solidity!");
bytes1 firstByte = 0x01;
enum
enum State { Created, Locked, Inactive }
State public state = State.Created;
引用类型在赋值或传递时按引用传递,修改引用会影响原始数据。
<!---->
T[k]
,其中 T
是元素类型,k
是固定长度。uint[5] fixedArray;
<!---->
<!---->
T[]
,其中 T
是元素类型。uint[] dynamicArray;
<!---->
bytes
:动态大小的字节数组。string
:动态大小的 UTF-8 字符串(本质上是 bytes
的特殊形式)。<!---->
bytes data = "Hello";
string name = "Solidity";
struct
struct User {
string name;
uint age;
}
User alice = User("Alice", 25);
mapping
mapping(address => uint) balances;
balances[0x123...] = 100;
contract
contract MyContract {
function foo() public pure returns (string memory) {
return "Hello";
}
}
MyContract c = new MyContract();
bool
、int
、uint
、address
、bytes1
到 bytes32
、enum
、function
。bytes
、string
、struct
、mapping
。contract
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!