网站首页 成长录 “慢生活”不是懒惰,放慢速度不是拖延时间,而是让我们在生活中寻找到平衡。
17. 结构体及用指针访问结构体
结构体是个很有用的东西,在用计算机语言描述现实世界里的东西时,不得不大量的使用它。把现实世界的某一样东西的各种属性,用一个一个的变量记录下来。最简单的比如:平面坐标平面坐标有两个值,X和Y在go语言中可以这样定义一个坐标的结构体__typeCoodinatestruct{XintYint}由于定义一个结构体是为了各种地...
阅读全文
14. switch 的条件写的有点灵活,不过风格还是go的一贯风格
switch是很容易理解的,先来个代码,运行起来,看看你的操作系统是什么吧。__packagemainimport("fmt""runtime")funcmain(){fmt.Print("Gorunson")switchos:=runtime.GOOS;os{case"darwin":fmt.Println("OSX...
阅读全文
15. defer语句延迟函数的执行
当函数中有defer语句,会延迟此语句的执行,直到函数返回后才执行。__deferfmt.Println("")defer后面的是参数延迟调用的参数是立刻生成的,但是在上层函数返回前都不会去执行。看例子,并运行看结果__packagemainimport"fmt"funcmain(){deferfmt.Print("H...
阅读全文
12. if 语句
在for循环的最后一个代码演示中,有了if语句。那个if语句是这样写的__if(i>3){break}有一点,你要知道。在Go语言中,if后面的()不是必须的。只有{}是必须的。所以你可以写成这样__ifi>3{break}在Go语言中,if还可以在条件之前执行一个简单的语句。有这个语句定义的变量的作用域仅在if范围之...
阅读全文
11. for循环 go语言只有for循环
Go只有一种循环结构——for循环。基本的for循环包含三个由分号分开的组成部分:初始化语句:在第一次循环执行前被执行循环条件表达式:每轮迭代开始前被求值后置语句:每轮迭代后被执行初始化语句一般是一个短变量声明,这里声明的变量仅在整个for循环语句可见。如果条件表达式的值变为false,那么迭代将终止。__packag...
阅读全文
13. 用循环和函数 实现Sqrt(x)
利用前面学习的循环和函数,来实现Sqrt(x)。并且与math.Sqrt(x)的结果做一下比较。这个很有意思,所以,把中间不断带入的变化值都打印出来。使用牛顿法来实现。牛顿法是同选择一个初始点z,然后重复这一过程求Sqrt(x)的近似值。为了实现计算结果,只需要重复计算10次。__packagemainimport("...
阅读全文
08. 零值
Go语言的变量在没有明确初始化时,会有一个零值,即默认值。不同类型的变量,零值是不同的。数值型零值为0布尔型零值为false字符串零值为“”(空字符串)请看下列代码__packagemainimport("fmt")funcmain(){variintvarffloat64varbboolvarsstringfmt.P...
阅读全文
10. 常量 与 数值常量
常量的定义与变量类似,只是需要使用const关键字。常量可以是字符、字符串、布尔型、数字型的值。需要注意的是,常量不可以使用:=语法定义。__packagemainimport("fmt")constPi=3.14funcmain(){constWorld="厚土"fmt.Println("Hello",World)f...
阅读全文
09. 类型转换 与 类型推导
在Go语言中,不同类型的项之间赋值时,需要显式转换。表达式T(v)将值v转换为类型T。__variint=42varffloat64=float64(i)varuuint=uint(f)或者更简单的写法__i:=42f:=float64(i)u:=uint(f)当定义了一个变量,却没有显式指出其类型时,变量的类型由等号...
阅读全文
26. 函数闭包
如果非必要,尽量不要在程序中使用闭包。go函数可以是一个闭包。闭包是一个函数值,它引用了函数体之外的变量。这个函数可以对这个变量进行访问和赋值。展示一个例子__packagemainimport"fmt"funcadder()func(int)int{sum:=0returnfunc(xint)int{sum+=xre...
阅读全文
27. 斐波纳契闭包
此例我们用go语言的闭包实现一个斐波那契数列的返回值。斐波那契数列,从第三个数字开始,每个数字都是前两个数字的和。所以,我们需要在fibonacci函数中定义三个变量x1,x2,sum。而返回值使用闭包的方式,每次求和,扔掉x1的值,把x2的值赋值给x1,把sum的值赋值给x2,达到保存最新的斐波那契数字的目的。sum...
阅读全文
23. map字典的使用
map是一组键和值的组合。在map内是无序的。你可以随时加入或删除一个键及键对应的值。想查看所有键值,使用range遍历好了。想找到唯一的键值,那要使用键来得到值。map的创建必须使用make__m:=make(map[string]int)我们可以把这个map当作是一组人的名字和年龄,然后这样写入键值。__m:=ma...
阅读全文
24. map字典测试用例(文字出现次数统计)
利用map实现字符串内文字出现次数的统计。编写一个测试用例,对文字计数函数的功能进行测试。测试通过,则打印文字出现次数的统计结果__packagemainimport("fmt""strings")//测试调用funcTest(ffunc(string)map[string]int){ok:=truefor_,c:=r...
阅读全文
25. 函数值 函数是函数也是值
在go语言中,函数可以作为返回值使用,也可以作为参数使用。比如__returnmath.Sqrt(x*x+y*y)__compute(math.Pow)这样的用法,在“map字典测试用例”中已经见过了。下面再看一个相对简单的示例__packagemainimport("fmt""math""reflect")funcc...
阅读全文
22. 实现Pic
__packagemainimport("fmt""image""bytes""image/png""encoding/base64")funcPic(dx,dyint)[][]uint8{//dx元素长度,dy整个slice长度s:=[][]uint8{}ss:=[]uint8{}fori:=0;i
阅读全文