【Solidity】データ型まとめ

Solidityにおけるデータ型のまとめを解説します。

Solidityのデータ型一覧

Solidityのデータ型一覧を表にしました。

データ型取り得る値デフォルト値備考
bool真偽値
(true/false)
false無し
int符号付き整数
(-2 ** n-1 〜 2 ** n-1 - 1)
0int8〜int256と8bitずつ存在。
intはint256と同義(エイリアス)。
uint符号無し整数
(0 〜 2 ** n - 1)
0uint8〜uint256と8bitずつ存在。
uintはuint256と同義(エイリアス)。
fixed符号付き固定小数点数0fixed8〜fixed256と8bitずつ存在。
fixedはfixed256と同義(エイリアス)。
ufixed符号無し固定小数点数0ufixed8〜uint256と8bitずつ存在。
uintはuint256と同義(エイリアス)。
addressEthereumアドレスaddress(0)(0x0000000000000000000000000000000000000000)無し
bytesバイト配列0x無し
string文字列""(空文字)無し
enum列挙型列挙型における最初の要素定数を列挙することが可能(値は最初の要素を0として順に割り振られる)。
struct構造体-異なるデータ型の変数を単一の型に纏めることが可能。
mappingマッピング/キーと値のペアマッピングの値のデータ型による無し
array配列[](空配列)固定長配列、可変長配列の2つが存在。
データ型一覧(Solidity)

サンプルコード

// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
contract Test {
/* bool(真偽値) */
bool varBool = true;
/* int(符号付き整数) */
int varInt = -1;
int varInt8 = 1;
int varInt16 = -1;
int varInt32 = 1;
int varInt64 = -1;
int varInt128 = 1;
/* uint(符号無し整数) */
uint varUint = 1;
uint varUint8 = 1;
uint varUint16 = 1;
uint varUint32 = 1;
uint varUint64 = 1;
uint varUint128 = 1;
/* fixed(符号付き固定小数点数) */
fixed varFixed = -0.1;
fixed varFixed8 = 0.1;
fixed varFixed16 = -0.1;
fixed varFixed32 = 0.1;
fixed varFixed64 = -0.1;
fixed varFixed128 = 0.1;
/* ufixed(符号無し固定小数点数) */
ufixed varUfixed = 0.1;
ufixed varUfixed8 = 0.1;
ufixed varUfixed16 = 0.1;
ufixed varUfixed32 = 0.1;
ufixed varUfixed64 = 0.1;
ufixed varUfixed128 = 0.1;
/* address(Ethereumアドレス) */
address varAddress = 0x0000000000000000000000000000000000000000;
/* bytes(バイト配列) */
bytes varBytes = "0x0";
bytes1 varBytes1 = "0";
bytes32 varBytes32 = "0x1234567890";
/* string(文字列) */
string varString = "hello";
/* enum(列挙型) */
enum Colors {
Red, // 0
Green, // 1
blue // 2
}
/* struct(構造体) */
struct User {
uint id;
string name;
address balance;
}
/* mapping(マッピング/キーと値のペア) */
mapping (address => uint) balances;
/* array(配列) */
// 固定長配列
string[2] members = ["bob", "alice"];
// 可変長配列
uint[] numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
}

各データ型によってコスト(ガス代)が異なります。より洗練されたアプリケーションを作成する場合、データ型ごとのコストも把握しておきましょう。

タイトルとURLをコピーしました