网站首页 成长录 “慢生活”不是懒惰,放慢速度不是拖延时间,而是让我们在生活中寻找到平衡。

20. slice 继续
2020-06-09 19:04 admin slice继续

slice是一个序列的值,可以根据序列号来访问。可以使用len(s)返回slices的长度。写一个例子,利用for循环,打印出slice的每一个值。利用下标来访问每一个值。__packagemainimport("fmt")funcmain(){s:=[]int{1,1,2,3,5,8,13,21,34}fmt.Pri...
阅读全文

21. range用法
2020-06-09 19:04 admin Range用法

range是一个内置函数。可以遍历数组、切片slice、字典map。当遍历数组和切片的时候,返回的是索引和元素。当遍历字典的时候,返回字典的键和值。__//range遍历切片的所有元素,并求和fibo:=[]int{2,3,5,8,13,34,55}sum:=0forindex,num:=rangefibo{sum+=...
阅读全文

19. slice和数组很像,但是slice可以添加元素
2020-06-09 19:04 admin 数组slice

slice中文可以称为“切片”。是Go语言为处理同类型数据序列提供的一个高效且方便的方式。是在数组上抽象的一个数据类型。切片的使用相当的广泛。切片可以直接赋值,不用提前指定元素的个数。切片还可以动态的增加元素。一个slice也就是切片的声明是这样的__s:=[]int{1,1,2,3,5,8,13,21,34}也可以使...
阅读全文

18. 数组
2020-06-09 19:04 admin 数组

数组由一组数据类型相同的值组成。定义一个整数数组__vara[10]int这个数组由10个整数组成的。数组的长度是其类型的一部分,因此数组不能改变大小。这似乎是一个制约,不过无须担心,Go语言提供了更加方便的方法来使用数组。先看一下数组的简单用法__packagemainimport("fmt")funcmain(){...
阅读全文

37. 图片(image)生成器
2020-06-09 19:04 admin 生成器image

图片的操控有点复杂。Image类型有一些必要的方法必须实现。而Image本身也要构建一个最简单的结构体,包含图片的宽和高。我们实现一个给定了大小的图片,然后把这个图片输出。图片基本的结构和方法__typeImagestruct{widthintheightint}func(imgImage)ColorModel()co...
阅读全文

36. web服务指定路径下的get参数接收与处理
2020-06-09 19:04 admin webGET

当我们使用go建立了服务器,那么一种常见的需求就摆在面前。如何给这个服务器的某个路径传参数呢?我们研究一下URL传参的接收与处理。对于http.Request发出的请求,我们需要使用到URL.Query().Get("XXX")这次模拟建立一个价格查询页面首先建立一个dollars类型,用以保存货币数值。__typed...
阅读全文

34. 一个简单的 web 服务器实现
2020-06-09 19:04 admin web服务器

go语言实现web服务器很容易。这样就可以很任意的建立web应用而互不干扰。当然,端口和IP要规划好。不过这里不讨论这个范畴的内容。我们只实现最基本的通过浏览器能够打印出我们想要的文字就可以了。我们需要实现http.Handler。__funcsayhello_cofox(whttp.ResponseWriter,r*...
阅读全文

33. 利用数据流实现密码代换功能
2020-06-09 19:04 admin 数据流代换

利用go语言的io.Reader包裹另一个io.Reader的模式,修改数据流中的字符串(密码)代换功能。提供一个字母和数字组合的字符串,对这个字符串利用Read读取的同时进行代换。对常见的特殊符号保持不变。对密码规定之外的字符忽略。在Read内,首先使用一个io.Reader获取完整字符串__l,err:=rot.r...
阅读全文

35. web服务器实现动态路径
2020-06-09 19:04 admin web服务器

有时候,我们希望给不同的用户有不同的服务路径。抛开那些高大上和深层次的原因,最浅显的,可以让用户觉得自己挺受重视。路径名称最好就是用户有关的字符串。我们这次以用户的名字来做个示例。首先定义一个结构体Person__typePersonstruct{NamestringAgeint}然后我们定义一下这个结构体的方法__f...
阅读全文

30. Stringers的一个练习
2020-06-09 19:04 admin 练习Stringers

让IPAddr类型实现fmt.Stringer以便用点分格式输出地址。例如,IPAddr{1,2,3,4}应当输出"1.2.3.4"。这个练习的实现关键是,在IPAddr的String()方法中,使用fmt.Sprintf对输出进行格式化。练习代码__packagemainimport"fmt"typeIPAddr[4...
阅读全文

32. Readers读取数据流
2020-06-09 19:04 admin 读取数据Readers

go语言的io包指定了io.Reader接口。go语言标准库包含了这个接口的许多实现,包括文件、网络连接、压缩、加密等等。io.Reader接口有一个Read方法:__func(T)Read(b[]byte)(nint,errerror)在程序中,我们使用循环读取数据流,直到error返回io.EOF。我们建立一个每次...
阅读全文

31. 错误 通常函数会返回一个error值来判断是否出错
2020-06-09 19:04 admin error值来

go程序使用error值来表示错误判断。通常函数会返回一个error值,我们用来判断程序运行是否出错。所以在go程序中,你总是能见到很多iferr!=nil语句。与fmt.Stringer类似,error类型是一个内建接口。__typeerrorinterface{Error()string}函数一般判断是否需要错误处...
阅读全文

29. 接口
2020-06-09 19:04 admin 接口

在go语言中,接口类型是由一组方法定义的集合。一个类型是否实现了一个接口,就看这个类型是否实现了接口中定义的所有方法。在go语言中,无需特别的指明?定义一个接口__typeAbserinterface{Abs()float64}定义一个结构体__typeVertexstruct{X,Yfloat64}定义两个方法,一个...
阅读全文

28. go语言没有类 却可以在结构体或任意类型定义方法
2020-06-09 19:04 admin go类型定义

在go语言中没有类。可是,是有方法的。给结构体定义方法,在对应的func和方法名之间,加上方法的接收者就可以了。比如,我们定义了一个结构体__typeVertexstruct{X,Yfloat64}希望Vertex有一个abs()方法,就这样写__func(v*Vertex)Abs()float64{returnmat...
阅读全文

38. goroutine轻量级线程
2020-06-09 19:03 admin goroutine轻量级

goroutine是由Go运行时环境管理的轻量级线程。在一个包中有一个函数__say(sstring)goroutine使用gosay("xxx")来开启一个新的goroutine执行。运行下面的程序,观察运行结果。__packagemainimport("time""fmt")funcsay(sstring){for...
阅读全文
顶部 底部