-
[日常] Go语言圣经--Channel习题
所属栏目:[大数据] 日期:2020-12-16 热度:138
练习 8.3: 在netcat3例子中,conn虽然是一个interface类型的值,但是其底层真实类型是*net.TCPConn,代表一个TCP连接。一个TCP连接有读和写两个部分,可以使用CloseRead和CloseWrite方法分别关闭它们。修改netcat3的主goroutine代码,只关闭网络连接中写的[详细]
-
[日常] Go语言圣经--并发的循环习题
所属栏目:[大数据] 日期:2020-12-16 热度:158
练习 8.4:?修改reverb2服务器,在每一个连接中使用sync.WaitGroup来计数活跃的echo goroutine。当计数减为零时,关闭TCP连接的写入,像练习8.3中一样。验证一下你的修改版netcat3客户端会一直等待所有的并发“喊叫”完成,即使是在标准输入流已经关闭的情况[详细]
-
[日常] Go语言圣经--并发的web爬虫
所属栏目:[大数据] 日期:2020-12-16 热度:195
两种: crawler.go? import ( "fmt" "links" //"log" "os" ) func main() { worklist := make(chan []string) // Start with the command-line arguments. go func() { worklist - os.Args[1:] }() // Crawl the web concurrently. seen := make(map[string][详细]
-
[日常] Go语言圣经-基于select的多路复用习题
所属栏目:[大数据] 日期:2020-12-16 热度:136
练习 8.8:?使用select来改造8.3节中的echo服务器,为其增加超时,这样服务器可以在客户端10秒中没有任何喊话时自动断开连接。 reverb3.go import ( "bufio" "fmt" "log" "net" "strings" "sync" "time" ) func main() { listener,err := net.Listen("tcp","[详细]
-
[日常] Go语言圣经--接口约定习题2
所属栏目:[大数据] 日期:2020-12-16 热度:128
练习 7.3:?为在gopl.io/ch4/treesort (§4.4)的*tree类型实现一个String方法去展示tree类型的值序列。 func main(){ //定义数组 arr:=[...]int{6,2,1,3,4,5} var t *tree for i:=0;ilen(arr);i++{ t=add(t,arr[i]) } //t1:=Sort(arr[:],t) //fmt.Println(ar[详细]
-
[日常] Go语言圣经--示例: 并发的Clock服务习题
所属栏目:[大数据] 日期:2020-12-16 热度:189
练习 8.1:?修改clock2来支持传入参数作为端口号,然后写一个clockwall的程序,这个程序可以同时与多个clock服务器通信,从多服务器中读取时间,并且在一个表格中一次显示所有服务传回的结果,类似于你在某些办公室里看到的时钟墙。如果你有地理学上分布式的[详细]
-
[日常] Go语言圣经-Panic异常,Recover捕获异常习题
所属栏目:[大数据] 日期:2020-12-16 热度:125
Go语言圣经-Panic异常1.当panic异常发生时,程序会中断运行,并立即执行在该goroutine中被延迟的函数(defer 机制)2.不是所有的panic异常都来自运行时,直接调用内置的panic函数也会引发panic异常;panic函数接受任何值作为参数。3.由于panic会引起程序的崩[详细]
-
[日常] Go语言圣经-指针对象的方法-bit数组习题
所属栏目:[大数据] 日期:2020-12-16 热度:57
练习6.1:?为bit数组实现下面这些方法 div class="cnblogs_Highlighter" pre class="brush:go;gutter:true;"package main import ( "bytes" "fmt" ) func main() { var x,y IntSet x.Add(1) x.Add(144) x.Add(9) fmt.Println(x.String()) // "{1 9 144}" y.Ad[详细]
-
[日常] Go语言圣经-指针对象的方法-bit数组习题2
所属栏目:[大数据] 日期:2020-12-16 热度:56
练习 6.3:?(*IntSet).UnionWith会用|操作符计算两个集合的交集,我们再为IntSet实现另外的几个函数IntersectWith(交集:元素在A集合B集合均出现),DifferenceWith(差集:元素出现在A集合,未出现在B集合),SymmetricDifference(并差集:元素出现在A但没有出现[详细]
-
[日常] Go语言圣经--接口约定习题
所属栏目:[大数据] 日期:2020-12-16 热度:52
Go语言圣经-接口1.接口类型是对其它类型行为的抽象和概括2.Go语言中接口类型的独特之处在于它是满足隐式实现的3.Go语言中还存在着另外一种类型:接口类型。接口类型是一种抽象的类型4.一个类型可以自由的使用另一个满足相同接口的类型来进行替换被称作可替换[详细]
-
[日常] Go语言圣经-匿名函数习题2
所属栏目:[大数据] 日期:2020-12-16 热度:83
练习5.13: 修改crawl,使其能保存发现的页面,必要时,可以创建目录来保存这些页面。只保存来自原始域名下的页面。假设初始页面在golang.org下,就不 要保存vimeo.com下的页面。 import ( "fmt" "io" "io/ioutil" "links" "log" "net/http" "net/url" "os"[详细]
-
[日常] Go语言圣经-可变参数习题
所属栏目:[大数据] 日期:2020-12-16 热度:109
1.参数数量可变的函数称为为可变参数函数,例子就是fmt.Printf和类似函数2.参数列表的最后一个参数类型之前加上省略符号“...”3.虽然在可变参数函数内部,...int 型参数的行为看起来很像切片类型,但实际上,可变参数函数和以切片作为参数的函数是不同的 类[详细]
-
[日常] Go语言圣经-Deferred函数
所属栏目:[大数据] 日期:2020-12-16 热度:115
1.只需要在调用普通函数或方法前加上关键字defer,就完成了defer所需要的语法。当defer语句被执行时,跟在defer后面的函数会被延迟执行。直到包含该defer语句的函数执行完毕时,defer后的函数才会被执行,不论包含defer语句的函数是通过return正常结束,还是[详细]
-
[日常] Go语言圣经-错误,函数值习题
所属栏目:[大数据] 日期:2020-12-16 热度:57
Go语言圣经-错误 1.panic异常。panic是来自被调函数的信号,表示发生了某个已知的bug 2.任何进行I/O操作的函数都会面临出现错误的可能 3.错误是软件包API和应用程序用户界面的一个重要组成部分,程序运行失败仅被认为是几个预期的结果之一 4.那些将运行失败[详细]
-
[日常] Go语言圣经-匿名函数习题
所属栏目:[大数据] 日期:2020-12-16 热度:199
Go语言圣经-匿名函数1.拥有函数名的函数只能在包级语法块中被声明,通过函数字面量(function literal),我们可绕过这一限制,在任何表达式中表示一个函数值2.通过这种方式定义的函数可以访问完整的词法环境(lexical environment),这意味着在函数中定义[详细]
-
[日常] Go语言圣经-函数递归习题
所属栏目:[大数据] 日期:2020-12-16 热度:185
练习 5.1: 修改findlinks代码中遍历n.FirstChild链表的部分,将循环调用visit,改成递归调用。 练习 5.2: 编写函数,记录在HTML树中出现的同名元素的次数。 练习 5.3: 编写函数输出所有text结点的内容。注意不要访问 和 元素,因为这些元素对浏览者是不可[详细]
-
[日常] Go语言圣经-函数多返回值习题
所属栏目:[大数据] 日期:2020-12-16 热度:82
Go语言圣经-函数多返回值1.在Go中,一个函数可以返回多个值2.许多标准库中的函数返回2个值,一个是期望得到的返回值,另一个是函数出错时的错误信息3.如果一个函数将所有的返回值都显示的变量名,那么该函数的return语句可以省略操作数。这称之为bare return[详细]
-
[日常] Go语言圣经--JSON习题2
所属栏目:[大数据] 日期:2020-12-16 热度:132
练习 4.12: 流行的web漫画服务xkcd也提供了JSON接口。例如,一个 https://xkcd.com/571/info.0.json 请求将返回一个很多人喜爱的571编号的详细描述。 下载每个链接(只下载一次)然后创建一个离线索引。编写一个xkcd工具,使用这些离线索引,打印和命令行输[详细]
-
[日常] Go语言圣经-文本和HTML模板习题
所属栏目:[大数据] 日期:2020-12-16 热度:120
Go语言圣经-文本和HTML模板 练习 4.14: 创建一个web服务器,查询一次GitHub,然后生成BUG报告、里程碑和对应的用户信息。 1.查看下文档godoc net/http |grep HandleFunc func HandleFunc(pattern string,handler func(ResponseWriter,*Request)) 2.godoc fm[详细]
-
[日常] Go语言圣经--Map习题
所属栏目:[大数据] 日期:2020-12-16 热度:67
练习 4.8: 修改charcount程序,使用unicode.IsLetter等相关的函数,统计字母、数字等Unicode中不同的字符类别。 练习 4.9: 编写一个程序wordfreq程序,报告输入文本中每个单词出现的频率。在第一次调用Scan前先调用input.Split(bufio.ScanWords)函数,这样[详细]
-
[日常] Go语言圣经--结构体,JSON习题
所属栏目:[大数据] 日期:2020-12-16 热度:70
Go语言圣经-结构体 1.结构体是一种聚合的数据类型,是由零个或多个任意类型的值聚合成的实体 2.通常一行对应一个结构体成员,成员的名字在前类型在后,不过如果相邻的成员类型如果相同的话可以被合并到一行 3.如果结构体成员名字是以大写字母开头的,那么该[详细]
-
[日常] Go语言圣经--复合数据类型,数组习题
所属栏目:[大数据] 日期:2020-12-16 热度:170
go 1. 2. 3. 4.slice go 1. 2. 3. 4.Printf 5. 4.1 4.2 1. func Sum256(data []byte) [Size]byte 2. godoc crypto //命令行标志 var hashMethod=flag.String("s","sha256","请输入哈希算法") func main(){ flag.Parse() num := compareSha256("x","X") fmt.P[详细]
-
[日常] Go语言圣经-Slice切片习题
所属栏目:[大数据] 日期:2020-12-16 热度:58
1.Slice(切片)代表变长的序列,序列中每个元素都有相同的类型,一个slice类型一般写作[]T,其中T代表slice中元素的类型;slice的语法和数组很像,只是没有固定长度而已,slice的底层确实引用一个数组对象 2.内置的len和cap函数分别返回slice的长度和容量 3.s[详细]
-
[日常] Go语言圣经--浮点数习题
所属栏目:[大数据] 日期:2020-12-16 热度:151
练习 3.1: 如果f函数返回的是无限制的float64值,那么SVG文件可能输出无效的多边形元素(虽然许多SVG渲染器会妥善处理这类问题)。修改程序跳过无效的多边形。 练习 3.2: 试验math包中其他函数的渲染图形。你是否能输出一个egg box、moguls或a saddle图案?[详细]
-
[日常] Go语言圣经--复数,布尔值,字符串习题
所属栏目:[大数据] 日期:2020-12-16 热度:91
go语言圣经-复数 1.我们把形如a+bi(a,b均为实数)的数称为复数,其中a称为实部,b称为虚部,i称为虚数单位。两种精度的复数类型:complex64和complex128,分别对应float32和float64两种浮点数精度 2.complex函数用于构建复数,real和imag函数分别返回复数的实[详细]
