一个游离于山间之上的Java爱好者 | A Java lover living in the mountains
说到映射(Mapping),有过其它编程语言经验的您,对这是再熟悉不过了。Solidity 中的映射(Mapping) 与Java的Map、Go里的Map以及javascript的JSON等众多编程语言中的Map一样,是用来存储一组键(Key) 值(Value),可通过键(Key)来获取对应
映射(Mapping)
Java
Map
Go
javascript
JSON
键(Key)
值(Value)
数组元素可以是任何类型,包括映射或结构体。对类型的限制是映射只能存储在 存储storage 中,并且公开访问函数的参数需要是 ABI 类型。 状态变量标记 public 的数组,Solidity创建一个 getter函数 。 小标数字索引就是 getter函数 的参数。
public
以下这些类型在 Solidity 中都属于 值类型: * 布尔类型(bool):字面常量值 true和 false * 整型(int/uint):分为有符号整型int和无符号整形uint,这一点倒是和 c++、golang很相像。不管是无符号还有符号整数,它们都是以 8 位递增到 256 位,而int
true
false
int
uint
Solidity是静态类型的,支持继承、库和复杂的用户定义类型以及其他功能。 使用Solidity,您可以为投票、众筹、盲目拍卖和多签名钱包等用途创建合约。 在部署合约时,你应该使用最新发布的 Solidity 版本。除了特殊情况外,只有最新版本才会收到安全修复。此外,突破性的变化以及新的
通俗来说,区块链本质上是一个去中心化的数据仓储,也就是每个人都保留着这个账本,可以认为它是一套加密的分布式超级账本。 比特币是基于区块链技术的第一个应用,也是目前最成功的一个应用。
区块链
Web3 以前所未有的方式赋予你数字资产的所有权。 例如,假设您正在玩一个 Web2 游戏。 如果您购买游戏内物品,它会直接与您的帐户绑定。 如果游戏创建者删除您的帐户,您将丢失这些物品。 或者如果您停止玩游戏,您将失去投资到游戏内物品的价值。
在 Go 1.11以前使用包管理一直被开发者所诟病。既然GOPATH这种包管理引起了一线开发者的一片骂声,所以,Go官方体恤一线开发者对GOPATH这种包管理的情绪,一直致力努力提供对一线开发者友好的包管理解决方法而奋斗。从最初的GOPATH到
Go 1.11
GOPATH
Go语言的包借助了目录树的组织形式,一般包的名称就是其源文件所在目录的名称,虽然Go语言没有强制要求包名必须和其所在的目录名同名,但还是建议包名和所在目录同名,这样结构更清晰。
除了上面的 errors.New 用法之外,我们还可以实现 error 接口自定义一个 Error() 方法,来返回自定义的错误信息。
无缓冲信道 Channel 是无法保存任何值的,该类型信道要求 发送 goroutine 和 接受 goroutine 两者同时准备好,这样才能完成发送与接受的操作。
通过上篇文章,我们知道该怎么声明信道 Channel,以及发送和读取数据。然而本文要讲的是单向Channel,可单向信道Channel到底是怎样的呢?
单向Channel
Channel 是进程内的通信方式,因此通过 channel 传递对象的过程和调用函数时的参数传递行为比较一致,比如也可以传递指针等。如果需要跨进程通信,我们建议用分布式系统的方法来解决,比如使用 Socket 或者 HTTP 等通信协议。Go 语言对于网络方面也有非常完善的支持。
并发与并行并不相同,并发主要由切换时间片来实现“同时”运行,并行则是直接利用多核实现多线程的运行,Go程序可以设置使用核心数,以发挥多核计算机的能力。
所谓空接口就是没有方法集,以至于任何类型都可实现它,换言之,也就是空接口可以保存任意类型的值。