Data Types
Solidity has several built-in data types, including:
Boolean:
bool
Integer:
int
anduint
with various bit sizes (int8
,uint8
,int256
, etc.)Address:
address
, which represents a 20-byte Ethereum addressAddress payable: Defines the
owner
variable as an address that can receive ether. Themsg.sender
address is cast to this type in the constructor.Fixed-point numbers:
fixed
andufixed
with various bit sizes (fixed8x1
,ufixed32x18
, etc.)Bytes:
bytes
andbyte
with various sizes (bytes1
,byte32
, etc.)String:
string
Array:
array
with a fixed or dynamic size (uint[10]
,string[]
, etc.)Struct:
struct
, which is a custom data type that groups several variables togetherMapping:
mapping
, which is a dynamic array-like data structure that maps keys to values
Data Types Example
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0;
// Enum data type enum Color { Red, Green, Blue }
contract Example { // State variables uint public number; bool public isTrue; string public message; address public owner; address payable public payee; bytes32 public data; fixed256x18 public fixedNumber; Color public color;
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
// Enum data type
enum Color { Red, Green, Blue }
contract Example {
// State variables
uint public number;
bool public isTrue;
string public message;
address public owner;
address payable public payee;
bytes32 public data;
fixed256x18 public fixedNumber;
Color public color;
// Struct data type
struct Person {
string name;
uint age;
uint[] favoriteNumbers;
}
// Array data type
uint[] public numbers;
// Mapping data type
mapping(address => uint) public balances;
// Constructor
constructor(uint _number, string memory _message, address _owner) {
number = _number;
message = _message;
owner = _owner;
color = Color.Red;
}
// Function that uses a struct
function addPerson(string memory _name, uint _age, uint[] memory _favoriteNumbers) public {
Person memory newPerson = Person({name: _name, age: _age, favoriteNumbers: _favoriteNumbers});
}
// Function that uses an array and a mapping
function addNumber(uint _number) public {
numbers.push(_number);
balances[msg.sender] += _number;
}
}
Data Types Example 2
pragma solidity ^0.8.0;
contract ExampleContract {
// State variables
uint public myUint;
string public myString = "Hello, World!";
bool public myBool = true;
address public myAddress = 0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2;
address payable public myPayableAddress = payable(0x5B38Da6a701c568545dCfcB03FcB875f56beddC4);
bytes32 public myBytes32 = "hello";
// Enum
enum MyEnum {
VALUE1,
VALUE2,
VALUE3
}
MyEnum public myEnum = MyEnum.VALUE1;
// Struct
struct MyStruct {
uint id;
string name;
}
MyStruct public myStruct = MyStruct({id: 1, name: "John"});
// Arrays
uint[] public myUintArray;
string[] public myStringArray;
bool[] public myBoolArray;
address[] public myAddressArray;
bytes32[] public myBytes32Array;
MyEnum[] public myEnumArray;
MyStruct[] public myStructArray;
// Mappings
mapping(uint => string) public myUintToStringMapping;
mapping(address => uint) public myAddressToUintMapping;
mapping(bytes32 => MyStruct) public myBytes32ToStructMapping;
// Functions
function setMyUint(uint _myUint) public {
myUint = _myUint;
}
function addMyUintToArray(uint _myUint) public {
myUintArray.push(_myUint);
}
function setMyString(string memory _myString) public {
myString = _myString;
}
function addMyStringToArray(string memory _myString) public {
myStringArray.push(_myString);
}
function setMyBool(bool _myBool) public {
myBool = _myBool;
}
function addMyBoolToArray(bool _myBool) public {
myBoolArray.push(_myBool);
}
function setMyAddress(address _myAddress) public {
myAddress = _myAddress;
}
function addMyAddressToArray(address _myAddress) public {
myAddressArray.push(_myAddress);
}
function setMyBytes32(bytes32 _myBytes32) public {
myBytes32 = _myBytes32;
}
function addMyBytes32ToArray(bytes32 _myBytes32) public {
myBytes32Array.push(_myBytes32);
}
function setMyEnum(MyEnum _myEnum) public {
myEnum = _myEnum;
}
function addMyEnumToArray(MyEnum _myEnum) public {
myEnumArray.push(_myEnum);
}
function setMyStruct(uint _id, string memory _name) public {
myStruct = MyStruct({id: _id, name: _name});
}
function addMyStructToArray(uint _id, string memory _name) public {
myStructArray.push(MyStruct({id: _id, name: _name}));
}
function setMyUintToStringMapping(uint _key, string memory _value) public {
myUintToStringMapping[_key] = _value;
}
}
Last updated