Solidity的数据类型

        solidity 是一门静态类型语言,和常见的静态类型语言有go、Java类似,需要在编码时为每个变量(本地或状态变量)指定类型。

1.类型分类

Solidity 类型分为以下三种:

        1.值类型(Value Types):          

  • 布尔类型(Booleans)
  • 整型(Integers)
  • 定长浮点型(Fixed Point Numbers)
  • 定长字节数组(Fixed-size byte arrays)
  • 有理数和整型常量(Rational and Integer Literals)
  • 字符串常量(String literals)
  • 十六进制常量(Hexadecimal literals)
  • 枚举(Enums)
  • 函数类型(Function Types)
  • 地址类型(Address)
  • 地址常量(Address Literals)
  • 用户定义值类型

        2.引用类型(Reference Types):

        引用类型包括数组 和结构体

        在定义引用类型时,有一个额外属性来标识数据的存储位置,这个属性有:

  • memory(内存): 变量在运行时存在,其生命周期只存在于函数调用期间。

  • storage(存储):保存状态变量,只要合约存在就一直保存在区块链中。

  • calldata(调用数据):用来存储函数参数的特殊数据位置,用来接收外部数据,是一个不可修改的、非持久的函数参数存储区域。

       记住一个规则:不同引用类型在进行赋值的时候,只有在不同的数据位置赋值时会进行一份拷贝,而在同一数据位置内通常是增加一个引用

      不同的数据位置的gas(以太坊区块链的交易费用代币:)消耗时不一样的:

  • 存储(storage)会在永久保存合约状态变量,开销最大。
  • 内存(memory)仅保存临时变量,函数调用之后释放,开销很小。
  • 调用数据(calldata) 最便宜。

        3.映射类型(Mapping Types)

        映射类型和Java的Map、go的map集合t在功能上差不多,它是一种键值对的映射关系存储结构,定义方式为mapping(KT => KV)。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值