Go语言中方法(method)就是一类带特殊的”receiver”参数的函数。函数(func)的一般写法为 func (r receiver) identifier(parameters) (return(s)) { code } 方法和函数的区别就在于方法的receiver参数写在函数体外面,并且方法针对的对象是自定义的type类。不能为内建类型声明方法(如 int 等) 练习:Stringer 通过让 IPAddr 类型实现 fmt.Stringer 来打印点号分隔的地址。 例如,IPAddr{1, 2, 3, 4} 应当打印为 “1.2.3.4”。 原题模版代码为 package main import "fmt" type IPAddr [4]byte ... Read more 17 Oct 2018 - 1 minute to read
Go语言中的切片(Slice)是比较重要的内容,下面是一个有关切片的练习 二、练习:切片 实现 Pic。它应当返回一个长度为 dy 的切片,其中每个元素是一个长度为 dx,元素类型为uint8的切片。当你运行此程序时,它会将每个整数解释为灰度值(好吧,其实是蓝度值)并显示它所对应的图像。 图像的选择由你来定。几个有趣的函数包括 (x+y)/2, xy, x^y, xlog(y) 和 x%(y+1)。 (提示:需要使用循环来分配 [][]uint8 中的每个 []uint8;请使用 uint8(intValue) 在类型之间转换;你可能会用到 math 包中的函数。) 此题主要练习 切片的使用 for循环语句的嵌套 解答代码如下 package m... Read more 14 Oct 2018 - 1 minute to read
A Tour of Go是官方做的一个很棒Golang学习文档。个人觉得很适合用来学习go语言的基本用法。但是其课程内容较少,跳跃性很大,感觉像前面还在学1+1,后面练习就让你独立解方程了。因此摘选了Tour上的习题做解答并作为个人练习。 Go Tour的所有练习代码都可以在我的Github Repo Go-tour-solutions中找到。 练习:循环与函数 此练习位于流程与控制栏(control flow),原题如下: 为了练习函数与循环,我们来实现一个平方根函数:用牛顿法实现平方根函数。 计算机通常使用循环来计算 x 的平方根。从某个猜测的值 z 开始,我们可以根据 z² 与 x 的近似度来调整 z,产生一个更好的猜测: z -= (z*z - x) / (2... Read more 11 Oct 2018 - 1 minute to read
本来不打算在windows上编译bitcoin的,但是上级指示做事要彻底,只好乖乖听话。 虽然比特币程序是跨平台的,在windows上编译显然不如在linux上那么简单快捷,但是经过我长时间的摸索,发现其实也没那么麻烦,只是有很多库需要下载。之前觉得麻烦是因为mingw无法复制粘贴编译需要用的代码。后来发现只需要用mingw shell去运行包括代码的脚本程序就好。 其实也是比较方便的,只需动动手指,复制粘贴就好。 本文参考 http://blog.sina.com.cn/s/blog_5922b3960101s5j9.html 一、安装MINGW,MSYS msys是一个在windows平台模拟shell的程序。它可以让我们在windows平台下模拟我们的ubuntu s... Read more 16 May 2016 - 2 minute to read
上次我们把比特币中的所有文件名及内容都改成了我们的新币newcoin。但是这还远远不够。 why? 因为所有的内核参数还是比特币的,所以即使运行了客户端,也会同步之前的比特币数据。 现在是时候进入代码的内部,探寻比特币的奥秘,并做一些真正属于我们的改动。 修改区块链参数 首先我们需要进入chainparams.cpp cd src sudo gedit chainparams.cpp 然后我们在代码中搜索mapCheckpoints,在第55行,它大概是这个样子的: static Checkpoints::MapCheckpoints mapCheckpoints = boost::assign::map_list_of ( 11111, uint25... Read more 14 Apr 2016 - 1 minute to read