自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

仗剑行于江湖,执笔记江湖事。

无人关注时,坚定执着;万人瞩目时,心如止水。个人站点:https://www.qiucode.cn

  • 博客(182)
  • 资源 (21)
  • 问答 (11)
  • 收藏
  • 关注

原创 两个月前发布的文章,好端端地审核未通过了,不知CSDN在搞什么鬼啊!

今天突然发现这篇两个月发布的文章,突然被”审核未通过“,这CSDN抽风了,还是这么了,文中也只是教授大家如何注册很火的ChatGPT。

2023-02-15 19:49:48 60

原创 玩以太坊链上项目的必备技能(内联汇编 [inline assembly]-Solidity之旅十八)

在回答这个问题之前,我们来看看每个新的编程语言诞生都是为了解决当前编程语言无法解决,或者说使用当前编程语言解决起来比较麻烦,那么,新的编程语言就在这样的环境下应运而生,当然咯,并不是所有新编程语言都是为了解决当前编程语言不能解决的问题,才被开发出来,而是……(此处不便说出缘由,毕竟它也不是本文的重点)。以下是一个简单的示例,函数接受两个参数,并将它们的和作为返回值,看看使用。允许您执行一些仅仅靠 Solidity 无法实现的逻辑,比如,指向特定的。,敢断言,那一行不是我写的,其他行也不是我写的。

2022-12-28 20:21:06 456

原创 玩以太坊链上项目的必备技能(库 [library]-Solidity之旅十七)

它本质上意味着,与合约不同,您不能在一个库中定义状态变量。为了在合约中使用任何库,我们需要首先告诉合约该库可以操作哪种数据类型。作为开发者的您,想必对项目中重复使用的工具函数,抽取到一个公共中,以便可以在您项目中的其它位置可调用。最后,当库函数成为数据类型本身的一部分时,我们可以在其对象上调用该方法,如我们上面的契约所示,即。因为库是一个独立的实体,它不能继承任何其他的库或合约。有些类似,但它并不是一个合约,它包含了可能多个消费者合约共有的功能,这有助于避免冗余。,因为它不会修改合约的状态。

2022-12-24 21:21:05 1030

原创 玩以太坊链上项目的必备技能(Constant 和 Immutable 状态变量-Solidity之旅十六)

编译器生成的合约创建代码将在返回合约之前修改合约的运行时代码,方法是将对不可变量的所有引用替换为分配给它们的值。如果要将编译器生成的运行时代码与实际存储在区块链中的代码进行比较,则这一点很重要。不可变量可以在声明时赋值,不过只有在合约的构造函数执行时才被视为视为初始化。允许内存分配器的副作用的原因是它可以构造复杂的对象,例如: 查找表(lookup-table)。允许可能对内存分配产生副作用(side-effect)的表达式,但那些可能对其他内存对象产生副作用的表达式则不允许。有确定的表达式来给它赋值。

2022-12-23 22:04:32 1172 2

原创 玩以太坊链上项目的必备技能(修改器 [modifier]-Solidity之旅十五)

修改器(modifier)在 Solidity 中是一种特殊类型的函数,用于修改其它函数的行为。例如,开发人员可以使用修改器来检查在允许函数执行之前是否满足某个条件。修改器(modifier)与函数类似,因为它们可以接受参数并有一个返回类型。修改器(modifier)也可以被链在一起,这意味着你可以在一个函数上有多个修改器(modifier)。然而,修改器(modifier)只能修改合约逻辑,不能修改合约的存储,包括结构。修改器(modifier)减少了开发者必须编写模板代码的数量,并且可以使您的

2022-12-23 09:47:58 822 1

原创 玩以太坊链上项目的必备技能(错误处理以及异常-Solidity之旅十四)

如果到达成功块的末尾,则在。当一个智能合约调用因错误而终止时,所有的状态变化(即对变量、余额等的改变)都会被恢复,一直到合约调用链。在表达式上的错误不会被捕获(例如,如果它是一个复杂的表达式,还涉及内部函数调用),只有外部调用本身发生的revert 可以捕获。现在我们可以用它们来处理外部函数调用的失败,而不需要回滚整个事务(被调用函数中的状态变化仍然会被回滚,但调用函数中的变化不会)。作为开发者的我们知道,我们所编写出来的程序难免会出现 bug ,而要做的是捕获异常,给用户抛出一个友好地错误提示。

2022-12-21 20:42:36 588

原创 玩以太坊链上项目的必备技能(函数及其可见性和状态可变性-Solidity之旅十三)

内部可见性函数访问可以在当前合约或派生的合约访问,外部不可以访问。由于它们没有通过合约的ABI向外部公开,它们可以接受内部可见性类型的参数:比如映射或存储引用。内部可见性状态变量只能在它们所定义的合约和派生合同中访问, 它们不能被外部访问。以便其他的合约读取他们的值。外部可见性函数作为合约接口的一部分,意味着我们可以从其他合约和交易中调用。private 函数和状态变量仅在当前定义它们的合约中使用,并且不能被派生合约使用。函数的参数变量这一点倒是与声明变量是一样的,如果未能使用到的参数可以省略参数名。

2022-12-19 20:30:23 387

原创 玩以太坊链上项目的必备技能(事件-Solidity之旅十二)

你必须知道事件的类型,包括哪个参数被索引,以及该事件是否是匿名的,以便正确解释数据。如果外部实体需要该日志实际上存在于区块链中的证明,可以请求日志的Merkle证明. 但需要留意的是,由于合约中仅能访问最近的 256 个区块哈希,所以还需要提供区块头信息。主题topic 让我们可以可以搜索事件,比如在为某些事件过滤一些区块,还可以按发起事件的合同地址来过滤事件。对日志的证明是可能的,如果一个外部实体提供了一个带有这种证明的合约,它可以检查日志是否真实存在于区块链中。添加了索引的事件,虽然方便了查找,但。

2022-12-18 20:59:44 421

原创 玩以太坊链上项目的必备技能(OOP-接口-Solidity之旅十一)

它定义了合约的骨架,如合约实现了某些接口(ERC20 或 ERC721),其他。接口基本上仅限于合约 ABI 可以表示的内容,并且 ABI 和接口之间的转换不应该丢失任何信息。接口的话,我们不必去关心它的具体实现功能,却可以与它进行交互。有这些限制,但在不久的将来,有可能解除某些限制(本次使用的是。就可以与我们编写的智能合约进行交互。为例,它定义了3个后续将会讲到的。了(这样说,可能有点不妥,因为。标准的NFT都实现了这些函数。中不能有方法具体实现,而。中可以有方法实现了 )。有这么多的限制,不能像。

2022-12-18 15:44:31 471

原创 玩以太坊链上项目的必备技能(OOP-抽象合约-Solidity之旅十)

前文在讲合约继承的基类构造函数的参数时,有提到抽象合约,也就是说,如果派生合约未能给其继承的基合约指定构造函数参数时,那么,该派生合约必须声明为抽象合约(abstract contract)。我们知道Java中抽象类的定义,其一抽象类不能实例化,其二是抽象类中可以拥有抽象方法(是一种没有方法体的、只有方法签名的方法。)而在 Solidity 中的抽象合约与Java的抽象类有异曲同工之妙。即假使合约中至少有一个函数没有实现(没有方法体,只有方法签名的方法),那么便将该合约定义为。

2022-12-17 14:59:55 473

原创 玩以太坊链上项目的必备技能(OOP-合约继承-Solidity之旅九)

在这种情况下,当另一个合约从它派生出来时,另一个合约的继承列表或构造函数必须为所有还没有指定参数的基类提供必要的参数(否则,其他合约也必须被声明为抽象的)。构造函数将始终以线性化顺序执行,无论在继承合约的构造函数中提供其参数的顺序如何。的朋友这时可能最想说的是,什么啊,Java 设计者当初就是为了避免多继承所带来的问题,而决定摒弃多继承的。声明的函数)会执行一次。您看,您这个问题,问的就比较有深度了,是的,所以在 Solidity 的。有参数的情况,派生合约需要指定所有参数,对于派生合约有两种方式。

2022-12-16 20:15:16 450

原创 玩以太坊链上项目的必备技能(流程控制-Solidity之旅八)

想来您是知道的吧!可若您确实不晓得,那您看了这篇文或许对。,其也是Solidity 唯一一个三元运算符,Solidity 和其他语言一样,支持大部分。当然咯,Solidity 也是支持。另外,Solidity 还支持。谈虎色变而其他语言又保留的。

2022-12-14 22:21:38 76

原创 玩以太坊链上项目的必备技能(单位以及全局变量-Solidity之旅七)

例如,挖矿社区中的恶意矿工可以用某个给定的哈希来运行赌场合约的 payout 函数,而如果他们没收到钱,还可以用一个不同的哈希重新尝试。它们是 Solidity 在全局命名空间 预设的一些变量和函数,用于获取区块链信息和一些通用的工具函数。当前区块的时间戳必须严格大于最后一个区块的时间戳,但这里能确保也需要它是在权威链上的两个连续区块。,当然,数字与以太币单位之间需要空格隔开的,这一点想必您应该是清楚的吧!,他们都有各自的货币单位。也是有属于自己的那一套货币单位的。的用法,我们后续会讲到,可以理解为。

2022-12-14 09:31:48 311 1

原创 玩以太坊链上项目的必备技能(基本类型转换以及推断-Solidity之旅六)

假使两个不同类型的值进行操作运算时,编译器则会隐式地将一个类型转换成另一个类型(赋值也是如此),这意味着操作始终是操作数其中一个的类型去执行。苹果(Apple)公司好容易把苹果手机(iphone)设计的越来愈薄,可是到了国内呢,即给手机贴上了膜又让手机套上了那专为手机量身定做的。,最终这样一来,手机厚了(当然咯,我们还是喜欢厚一点的手机,毕竟拿在手上,能察觉手上确实拿了个东西!可能会发生些您无法预料的状况,所以您需要繁琐的测试,看最终是否能达到您的要求。之间的转换并不陌生吧!,通常,是可以进行类型之间的。

2022-12-12 22:08:10 226

原创 玩以太坊链上项目的必备技能(变量作用域-Solidity之旅五)

在前文我们讲过 Solidity 是一种静态类型的语言,这就意味着在声明变量前需先指定类型。而 Solidity 对变量划分了以下三种作用域​ 该变量的值被永久地存放在合约存储中,合约内所有函数可访问,其Gas(燃料)消耗高。​ 函数体声明的变量,其值在该函数执行前都存在的变量。​ 存在于全局命名空间的特殊变量,提供有关区块链和交易属性的信息。

2022-12-11 21:12:12 490

原创 玩以太坊链上项目的必备技能(类型-映射类型-Solidity之旅四)

Solidity 中的映射本身是无法遍历的,即获取每一组键值对。不过,可通过结构体来实现迭代。,有过其它编程语言经验的您,对这是再熟悉不过了。Solidity 中的。用来记录其他的账号,可以允许从其账号使用多少数量的币.。是一个嵌套mapping的例子.。Solidity 声明。一样,是用来存储一组。

2022-12-10 20:49:38 454

原创 玩以太坊链上项目的必备技能(类型-引用类型-Solidity之旅三)

在前文我们讲述了值类型,也就说再修改值类型的时候,每次都有一个独立的副本,如:string 类型的状态变量,其值是无法修改,而是拷贝出一份该状态的变量,将新值存起来。对于处理稍微复杂地值类型时,拷贝将变得愈发大了,也正是介于此,才考虑到将数据存放在内存(memory)或是存放在。在 Solidity 中,数组(array)和 结构体(struct)属于引用类型。更改数据位置或类型转换将始终产生自动进行一份拷贝,而在同一数据位置内(对于 存储(storage) 来说)的复制仅在某些情况下进行拷贝。

2022-12-09 20:56:45 818

原创 玩以太坊链上项目的必备技能(类型-值类型-Solidity之旅二)

Solidity 在编译事需指定变量(状态变量和局部变量)。虽然 Solidity 受到了 c++、python以及 javascript 的影响,但 和是不存在的,当然咯,每个新声明的变量总是有的,显然这是跟其声明的类型相关的。而 Solidity 将类型统归纳为、、。本文将先从讲起。,顾名思义便是按值进行赋值变量或传递给函数,它们总是会将值拷贝(相对于指针传递,也可以说是引用传递)。以下这些类型在 Solidity 中都属于 值类型:它是一种二选一值类型,其取值为和。整数地址类型这是一个 Sol

2022-12-06 21:52:25 456

原创 玩以太坊链上项目的必备技能(初识智能合约语言-Solidity之旅一)

前面一篇关于翻译文讲到了,是一种计算机程序,既然是程序,那就可以使用去编写了。而若想玩区块链上的项目,大部分区块链项目都是开源的,能看得懂代码,或找出其中的漏洞,那么,学习这门高级的智能合约语言是有必要的,当然,这都得在上,毕竟国内的有些是不兼容。是一种面向对象的高级语言,用于实现智能合约。智能合约是管理以太坊状态下的账户行为的程序。是运行在以太坊(Ethereum)虚拟机(EVM)上,其语法受到了、、影响。Solidity是静态类型的,支持继承、库和复杂的用户定义类型以及其他功能。使用Solidity,您

2022-12-05 22:34:42 713

翻译 区块链中的智能合约(Smart Contract)

1994年,法律学者、密码学家Nick Szabo认识到智能合约的去中心化分类账的应用。他理论上认为,这些合同可以用代码编写,可以在系统上存储和复制,并由构成区块链的计算机网络进行监督。这些智能合约也可以帮助在某些条件下在各方之间转移数字资产。智能合约(或称加密合约)是一种计算机程序,在一定条件下直接自动控制双方的数字资产转移。智能合约的工作方式与传统合约相同,同时也自动执行合约。智能合约是完全按照其创建者的设置(编码,编程)执行的程序。就像传统合同可由法律强制执行一样,智能合同可由代码强制执行。比特币网络

2022-12-05 19:45:46 1411

翻译 区块链中的共识机制以及共识算法

共识,从字面上来看,是在某方面达成一致。打个比方,一个部门最近来了几位新同事,部门主管为了欢迎新同事的加入,以能让新同事融入到新环境,提议下班后聚个餐,对于聚餐了,大伙对此举双手赞成,毕竟能蹭个免费餐的事并不是每月都有的,这时便可以说,大家对下班后聚餐迎新达成了一致认同。共识机制是一整套由协议、激励和想法构成的体系,使得整个网络的节点能够就区块链状态达成一致。我们知道,区块链是一个分布式的去中心化网络,它提供了不可更改性、隐私性、安全性和透明度。没有中央机构存在来验证和核实交易,但区块链中的每一笔交易都被认

2022-12-04 18:06:02 1635

原创 是时候回答【我为什么要学习 Go 语言(golang)】这个问题了

而那 34 篇是涵盖 golang 的基础语法,虽然 golang 版本使用的是 1.19,但却没能在那 三十来篇里讲述早在 golang 1.18 就出现的新功能。任何人、组织/机构都可参与进来,且链上的所有数据记录公开、透明,任何人都能与之共识过程,不受任何机构控制,是完成。每种语言都有优缺点,不能拿另一个语言中有的功能,来质疑golang怎么没有呢,吐槽golang最厉害莫过于说它没有异常处理,这不就是那其他语言来比较吗!,乍然间,友人们无不张口结舌,双目紧盯着您,不错过任何细节,让您把这趣事讲完。

2022-12-02 22:42:22 743

原创 在构建 Web3 前,需先知道什么是区块链,毕竟 Web3 是基于区块链

要说什么是区块链,那么这里就不得不提比特币了,它是一种点对点(Peer to Peer,P2P)形式的去中心化加密货币,点对点的传输意味着是一个去中心化的支付系统。比特币的概念最初是由中本聪在2008年10月31日提出,于2009年1月3日,中本聪用个人电脑挖出了世界上第一批块比特币(也称创世区块),由此正式宣告了比特币的诞生。由于2008年的金融危机爆发的原因,比特币之父中本聪才想要构建一套不受中心化机构控制的电子货币,他构思底层时决定抛弃中心化数据存储,设计出强去中心化的底层机制。

2022-12-01 20:30:51 349

原创 Web3 来了,让我们展开双手拥抱它吧!

也让越来越多的人蜂拥互联网,这其中不乏产生出了独角兽,当然咯,成功的人是少数的,也正是这些极少数的独角兽互联网巨头逐渐开始掌控海量的流量以及其内容产生的价值。中心化网络成就了极少数互联网巨头,他们几乎垄断了互联网,由于数据都保存在中心网络内,以至于那些手头拥有数据的中心化巨头,可以为所欲为,完全没有考虑到用户的感受!还催生了广告驱动的盈利模式,虽然此时的用户可以在平台上创作内容,然而他们却不能拥有自己创作的内容,以及自己无法在该平台下将内容变现。想必,正在屏幕前浏览这篇文章的你,也是没见过。

2022-11-30 20:28:25 290

原创 Go 语言处理静态资源(qiucode.cn 重构篇 五)

文件,添加对静态资源路径。静态资源解压,打开进入。

2022-11-26 22:35:34 90

原创 Go 语言搭建个人博客(qiucode.cn 重构篇 四)

而面向用户的页面所展示的列表通常有两种分页渲染方式:一是传统的按钮触动分页形式,二则为利用浏览器滚动条触底向服务端请求下一页的数据。当然咯,关于服务端处理分页好的列表返回给页面,其实现方式也有多钟的,或是数据表使用分页语句查询出数据,亦或是将数据表全部查询出来,而后经过硬编码进行分页,不管是使用那种方式,返回到页面上的列表数据总是经过服务端分页处理过的。进行重构,也就还是采用上述所说的第二种方式,毕竟那只是在页面渲染列表的方式不同而已,服务端的分页策略还是一样的。功能,故而,你需确认你的。

2022-11-22 22:13:25 108

原创 Go 语言搭建个人博客(qiucode.cn 重构篇 三)

项目中如数据库连接、邮箱配置等这些信息一般会被写入一个文件,而通过编码在程序中读取想要的配置信息。我们把模板文件统一存放在一个目录下,故而新建一个。为了方便项目使用,我们对读取配置进行了封装。我们再创建一个用于存放项目启动相关的。文件中的数据库连接抽取出来,创建。文件作为配置文件,配合第三方库。到了这里,我们可以创建所谓的。目录,在该目录下再新建一个。新目录,并在该目录下新建。文件夹,在该文件夹下新建。目录,而后在该目录新建。在项目根目录新建一个。在项目根目录新建一个。目录,在该目录下新建。

2022-11-20 21:05:56 349

原创 Go 语言搭建个人博客(qiucode.cn 重构篇 二)

服务器端负责将客户端发送过来的 HTTP 请求,进行处理(处理器),解析路由(Route),而后把 URL 映射到对应的控制器(Controller)。模型(Model):用于处理应用业务逻辑相关的数据i,以及封装对数据的处理方法。MVC 架构模式将项目分为三层:M(Model)、C(Controller)和 V(View)。控制器(Controller):对客户端请求处理以及对模型的交互,而后做出响应。视图(View):也就是最终呈现在用户眼前的进过处理后的数据。而后,在命令行运行项目。

2022-11-15 23:12:09 166

原创 Go 语言搭建个人博客(qiucode.cn 重构篇 一)

在下图所示目录中创建一个新文件夹(新目录),当然咯,你大可在你电脑的任何位置新建一个目录。浏览器: Chrome (在版本上没有特别要求)想要搭建一个简单的 HTTP 服务器端,需调用。极力推崇的最新管理项目的方案,这种方式摆脱了。命令行处于监听状态,打开浏览器,在地址栏输入。windows 系统版本: win 8.1。执行以上命令后,会在当前目录下自动生成。golang 版本: 1.19。函数进行路由注册,而后通过。函数来开启对客户端的监听。进行管理的,毕竟这是。所在目录下管理项目。

2022-11-13 21:12:59 349

原创 Go 语言中的 Moduels 管理(Let‘s Go 三十四)

在Go 1.11以前使用包管理一直被开发者所诟病。既然GOPATH这种包管理引起了一线开发者的一片骂声,所以,Go官方体恤一线开发者对GOPATH这种包管理的情绪,一直致力努力提供对一线开发者友好的包管理解决方法而奋斗。从最初的GOPATH到GO VENDOR,再到现在最新的GO MODULES,这期间,Go 官方不免走了很多弯路,但展现在我们跟的GO MODULES已是很像样的模块管理了。在命令行窗口输入go env命令,可以看到,多了个变量,111是代表Go 1.11版本提出来的。off、on、

2022-11-11 21:45:59 659

原创 Go 语言中的包(Let‘s Go 三十三)

Go语言的包借助了目录树的组织形式,一般包的名称就是其源文件所在目录的名称,虽然Go语言没有强制要求包名必须和其所在的目录名同名,但还是建议包名和所在目录同名,这样结构更清晰。包可以定义在很深的目录中,包名的定义是不包括目录路径的,但是包在引用时一般使用全路径引用。比如在下定义一个包 c。在包 c 的源码中只需声明为package c,而不是声明为,但是在导入 c 包时,需要带上路径,例如。-

2022-11-07 20:41:53 113

原创 Go 语言中的错误处理(Let‘s Go 三十二)

除了上面的 errors.New 用法之外,我们还可以实现 error 接口自定义一个 Error() 方法,来返回自定义的错误信息。return fmt . Sprintf("出现错误:%.0f 为负数" , e . Num) } func Sqrt(f float64)(float64 , error) {= nil {

2022-11-03 19:13:18 40

原创 Go 语言中的带有缓冲 Channel(Let‘s Go 三十一)

因此,限制信道的长度有利于约束数据提供方的供给速度,供给数据量必须在消费方处理量+信道长度的范围内,才能正常地处理数据。同理,如果缓冲通道中有数据,接收时将不会发生阻塞,直到信道中没有数据可读时,信道将会再度阻塞。这导致有缓冲的信道和无缓冲的信道之间的一个很大的不同:无缓冲的信道保证进行发送和接收的 goroutine 会在同一时间进行数据交换;前几篇文章我们使用 make 创建出来的信道 Channel,并没有传入第二个参数,也就是说,没有传入第二个参数创建的信道 Channel,便是无缓冲信道咯。

2022-10-31 19:31:39 396

原创 Go 语言中的单向 Channel(Let‘s Go 三十)

通过上篇文章,我们知道该怎么声明信道 Channel,以及发送和读取数据。,也就是声明出来的信道Channel,此刻的Channel信道便是只能发送或读取数据。来声明一个只能发送数据的信道,其信道变量的类型则为。,可单向信道Channel到底是怎样的呢?声明出来的信道便是只能接受数据,类型则是。要声明单向信道Channel,可以使用。

2022-10-29 18:56:24 57

原创 Go 语言中的 Channel(Let‘s Go 二十九)

接上篇,要想在 goroutine 间进行通信,则需通过 Channel 信道传递消息。Channel 是进程内的通信方式,因此通过 channel 传递对象的过程和调用函数时的参数传递行为比较一致,比如也可以传递指针等。如果需要跨进程通信,我们建议用分布式系统的方法来解决,比如使用 Socket 或者 HTTP 等通信协议。Go 语言对于网络方面也有非常完善的支持。Channel 是类型相关的,也就是说,一个 Channel 只能传递一种类型的值,这个类型需要在声明 Channel 时指定。

2022-10-27 20:48:37 397

原创 Go 语言中的并发编程(Let‘s Go 二十八)

goroutine 是一种非常轻量级的实现,可在单个进程里执行成千上万的并发任务,它是Go语言并发设计的核心。说到底 goroutine 其实就是线程,但是它比线程更小,十几个 goroutine 可能体现在底层就是五六个线程,而且Go语言内部也实现了 goroutine 之间的内存共享。使用 go 关键字就可以创建 goroutine,将 go 声明放到一个需调用的函数之前,在相同地址空间调用运行这个函数,这样该函数执行时便会作为一个独立的并发线程,这种线程在Go语言中则被称为 goroutine。

2022-10-24 19:17:01 243

原创 Go 语言中的空接口(Let‘s Go 二十七)

空接口是接口类型的特殊形式。所谓空接口就是没有方法集,以至于任何类型都可实现它,换言之,也就是空接口可以保存任意类型的值。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C。

2022-10-23 21:29:40 98

原创 Go 语言中的类型断言(Let‘s Go 二十六)

Go中使用空接口来表示可以是任意类型,以至于这样,需要检测该变量类型,那便要类型断言。必须是一个借口类型的变量,否则编译报错。Type是一个具体的类型。该断言表达式返回一个val和一个布尔类型ok,根据ok判断varl是否属于Type类型。

2022-10-22 21:30:40 121

原创 Go 语言中的接口(Let‘s Go 二十五)

中的接口,类型实现接口方法集的方法,其类型实现的方法签名必须要与接口中的方法集中方法签名一样。类型不需要显式声明它实现了某个接口:接口被隐式地实现。多个类型可以实现同一个接口。接口类型可以包含一个实例的引用, 该实例的类型实现了此接口(接口是动态类型)。实现某个接口的类型(除了实现接口方法外)可以有其他的方法。等纯面向对象编程语言那样,它是没有。(只有方法声明,没有方法实现体)。一个类型可以实现多个接口。这个关键字用来实现接口。这种面向对象的概念。

2022-10-21 20:23:55 65

原创 Go 语言中的方法(Let‘s Go 二十四)

Go中的方法是一种特殊的函数,通过接受者将函数绑定在一起,这样便可以模拟面向对象那样。}要将函数与某个类型绑定在一起,只需在函数名称前加需要绑定的类型。

2022-10-19 21:34:34 66

vs2012编译ACE-6.3.0

ace6.3.0在vs2012下编译过程

2020-10-28

微信公众号使用到的dom4j和xstream的jar

由于先前有已经有上传过dom4j和xtream的两个jar包了,但最近看到之前那个下载积分变成27了,这可能是csdn的bug,我原先都是定义1个积分,因为csdn现在没有0积分了,最低就是1积分!

2018-09-21

微信公众号自动回复的TextMessage类文件

由于网友说TextMessage类是自定义的吗?这就将这个类文件上传上来以供大家参考!

2018-05-14

dom4j、XStream的jar包

dom4j用于解析xml 文档,而XStream则是将Java对象转成xml文件。使用这两个工具就很好的解决了xml文件的解析与Java对象转成xml的麻烦了!

2017-09-20

IDEA之maven搭建Spring4SpringMVC4Mybatis3

IDEA之maven搭建Spring4 SpringMVC4 Mybatis3框架整合。使用maven搭建框架整合,去掉了而在搜索下载jar而烦恼。

2017-09-08

基于ThinkPHP3.2.3后台登录界面

基于ThinkPHP3.2.3后台登录界面,其实主要就是html模板部分!

2017-06-03

Shiro入门实例

Shiro入门实例

2017-03-28

java连接memcached服务的jar

java连接memcached服务的jar

2017-02-12

ExtJS4.2入门案例

ExtJS4.2入门案例 博客:http://blog.csdn.net/coco2d_x2014/article/details/52986835

2016-10-31

java操作redis的jar

java操作redis的jar 博客:http://blog.csdn.net/coco2d_x2014/article/details/52939162

2016-10-26

Hibernate4二级缓存Ehcache案例

Hibernate4二级缓存Ehcache案例,可参考博客:http://blog.csdn.net/coco2d_x2014/article/details/52927638

2016-10-25

cocos2dx日日酷跑游戏源码

cocos2dx日日酷跑游戏源码 使用cocos2dx 2.2.1版本

2016-10-13

Cocos2d-x 3.X游戏开发入门精解

Cocos2d-x 3.X游戏开发入门精解电子书

2016-10-10

HTML5与CSS3基础教程(第8版)

HTML5与CSS3基础教程(第8版)

2016-10-08

HTML5与CSS3基础教程

HTML5与CSS3基础教程

2016-10-08

sublimeText3配置Lua5.3.0

主要是在sublime3配置Lua5.3.0

2016-10-03

vs2013编译lua5.3源码

亲测通过!

2016-10-02

eclipse4.x安装打包工具FatJar

将下载的直接放在eclipse安装目录的plugins文件夹中,重启eclipse即可;或者解压后将里面的jar放在eclipse安装目录的plugins文件夹中,重启eclipse即可。

2016-08-23

Eclipse svn插件包

Eclispe和Myeclipse的svn插件包,将其解压放到dropins文件夹下,如:D:\Program Files\MyEclipse Professional\dropins

2015-11-05

Android.pdf

Android开发电子书教程与参考案例、项目案例

2015-08-24

JAVA 飞机订票系统源代码

JAVA 飞机订票系统源代码

2014-07-04

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除