01 2019 档案
摘要:一:反射的基本介绍 ①:反射可以在运行时动态获取变量的各种信息,比如变量的类型(type),类别(kind); ②:如果是结构体变量,还可以获取结构体声明的字段好方法; ③:通过反射,可以修改变量的值,可以钓鱼关联的方法; ④:反射,需要import "reflect" 二:反射的应用场景 ①:不知
阅读全文
posted @ 2019-01-28 23:46
louis-sun
摘要:一·:channel的必要性 ①:使用gorouting来完成1-200的各个数的阶乘,并且把阶乘后的数放入map中 使用-race查看是否存在资源竞争问题 由上代码可知,gorouting效率虽高,但在该应用场景下容易出现并发或并行的安全问题,由于存在资源竞争问题,当其中一个gorouting正在
阅读全文
posted @ 2019-01-26 22:28
louis-sun
摘要:一:gorouting的必要性 假如设计一个程序1-10000000000000数字之间那些是偶数 ①:传统思路上设计一个循环,在循环中判断 ②:使用并发或者并行的方法,将判断那些书偶数的任务分配给多个grouting去完成,这样将大大提高速率。 二:进程与线程 ①:进程就是程序在操作系统中的一次执
阅读全文
posted @ 2019-01-26 16:16
louis-sun
摘要:当我们想测试编写的函数是否正确时,可以通过Golang内置的testing测试框架进行测试。 一:单元测试可以解决的问题 ①:确保每个函数是可运行,并且运行结果是正确的; ②:确保写出来的代码性能是好的,能够在高并发的情况下保持稳定; ③:及早发现程序设计或代码的逻辑错误,定位错误今早解决。 二:简
阅读全文
posted @ 2019-01-25 12:42
louis-sun
摘要:json是一种轻量级的数据交换格式,有限提高数据在网络中的传输效率,易于阅读和编写数据,且易于生成key-value格式数据。 一:json数据的序列化举例 二:json反序列化 三:结构体的序列化的反射机制 当结构体定义的字段为大写字母开头,但客户端希望接受到的都是小写字母的字段时,可以使用反射机
阅读全文
posted @ 2019-01-24 23:36
louis-sun
摘要:一:os.File封装了所有与文件操作有关的操作,File是结构体 ①:常用操作 ①:Read()举例,Read()取出len(b)的字节数据,并写入b中 其他方式使用大同小异。 二:打开文件与关闭文件 由上结果可知,file为指针。 三:读文件操作应用 ①:文件读取(适用于大小文件读取) ②:一次
阅读全文
posted @ 2019-01-23 16:10
louis-sun
摘要:一:由于接口是基本类型,不知道具体类型,如果要转成具体类型需要使用类型断言 二:断言的使用细节 ①:断言会放回两个数据,如果只赋值给一个参数,默认返回断言后的结果,如果赋值给两个,第二个为bool值
阅读全文
posted @ 2019-01-21 16:47
louis-sun
摘要:一:在Golang中多态是通过接口(interface)实现的。 二:接口多态的两种形式 ①:多态参数,即第一大类。 ②:多态数组(接口多态数组) 三:
阅读全文
posted @ 2019-01-21 16:26
louis-sun
摘要:一:接口的定义 interface类型可以定义一组方法,但这些方法不需要实现。且interface不能包含任何字段,某个自定义类型(如结构体),需要用到时再具体实现该方法。 二:简单使用举例 三:接口使用细节 ①:接口本身不可以创建示例,但可以指向一个实现该接口方法的自定义的类型(如结构体) ②:接
阅读全文
posted @ 2019-01-13 17:53
louis-sun
摘要:Golang的继承与java和php不太一样,如php继承需要用到extends关键字,而Golang使用的是匿名继承或有名继承。 二:简单举例 继承的好处有,提高代码的复用性,程序的扩展和维护更加简单 三:继承的使用细节 ①:结构体可以使用继承结构体的所有字段,无论首字母大写还是小写。 ②:匿名继
阅读全文
posted @ 2019-01-13 17:04
louis-sun
摘要:一:结构体方法定义 二:简单举例 三:结构体方法使用细节 ①:结构体类型是值类型,在方法调用中,遵守值类型的传递规则 ②:如果希望在方法中的修改结构体变量,可以使用指针方法 ③:自定义类型也可以有方法,而不仅仅是结构体(struct),如:int,float64; ④:方法的访问控制方法和函数一样,
阅读全文
posted @ 2019-01-11 22:36
louis-sun
摘要:字段是结构体的一个组成部分,一般的数据类型、数组,引用类型等都是字段。 一:字段使用细节说明 ①:字段声明方式与普通声明略有区别,如:字段Name string即可; ②:字段声明后没有赋值使用默认值,如引用类型默认值就是nil; ③:举例1 string默认为空字符串,[ ]和map[ ]实质也是
阅读全文
posted @ 2019-01-11 17:21
louis-sun
摘要:一:Golang面向对象说明 ①:Golang的面向对象编程与传统的面向对象编程有区别,并不是纯粹的面向对象编程。所以说Golang支持面向对象编程特性是比较正确的; ②:Golang没有类,Golang中结构体(struct)与其他编程语言的类同等地位,可以认为结构体就是Golang的类; ③:G
阅读全文
posted @ 2019-01-11 15:39
louis-sun
摘要:一:map定义 map是key-value结构,类型php的关联数组。map的声明和使用方式与slice差不多如:var m map[string]string。 二:使用举例 ①:在声明map之后一定要make()否则将会因为没有分配内存空间而导致报错; ②:当key重复时,则以最后一个为准; ③
阅读全文
posted @ 2019-01-09 11:20
louis-sun
摘要:在Golang中数组定义后长度不可变,但很多时候我们需要数组能够动态赋值,这个时候就可以用到slice切片来解决这个问题(通过append()函数动态修改切片)。 一:切片的介绍 ①:切片是数组的一个引用,因此切片是引用类型数据; ②:切片的使用方法基本和数组一样; ③:也可以理解切片为动态的数组(
阅读全文
posted @ 2019-01-08 11:03
louis-sun
摘要:一:数组的定义 数组是用来存放多个同一类数据得数据类型。 二:数组的遍历,略。 三:使用说明 ①:数组一旦别定义,其长度是固定的,不能动态变化。 ②:var arr []int这时的arr就是切片。 ③:数组创建后如不赋值,则使用相关数据类型的默认值。
阅读全文
posted @ 2019-01-07 11:23
louis-sun
摘要:一:time包获取时间 二:获取时间戳 备注:UnixNano()为纳秒。 三:程序沉睡 代码示例 备注:time包获取的时间常量只能乘不能除。
阅读全文
posted @ 2019-01-07 10:58
louis-sun
摘要:一:统计字符串长度,按字节算,len(string) 二:字符串遍历,同时处理中文编码问题。 三:字符串转数字,字符串转bool值等等,略,已在前面讲过。 四:字符串查找,strings.Contains(),由下图可知,strings.Contains()判断的结果为返回bool值。 五:字符串统
阅读全文
posted @ 2019-01-07 10:36
louis-sun
摘要:一:defer主要用于延时调用。 二:defer举例 ①:由上可知在执行deferTest()函数时,只有其他所有代码运行完毕之后才会执行被压入栈去的defer代码。 ②:当有多个defer时,栈区里得1defer执行原则为"先进后出"。 ③:虽然defer语句在20-3的后面执行,但defer输出
阅读全文
posted @ 2019-01-05 16:12
louis-sun
摘要:一:闭包的定义 闭包就是一个函数与其相关的引用环境组合的一个整体。 二:案例演示 ①:返回的匿名函数引用了外部i,故匿名函数与外部的i构成闭包函数。 ②:由于f := add()时返回的是匿名函数,且i以被初始化赋值,再次调用闭包函数时,其实已经跳过初始化,直接使用匿名函数保留的值。可类比php的s
阅读全文
posted @ 2019-01-05 15:54
louis-sun
摘要:一:init()函数时Go的初始化函数,与php的__construct()作用一致,不再举例。 二:匿名函数,略。
阅读全文
posted @ 2019-01-05 15:17
louis-sun
摘要:一:为什么需要包 ①:在开发中,经常出现在不同的文件中调用其他文件所定义的函数或参数,如:main.go调用base.go中的函数。 ②:在多人开发的情况下,大概率会出现不同的开发程序员使用相同的函数名去实现不同的功能,为了避免函数名的冲突,可使用包进行隔离。 二:包的定义 包实际上就是创建不同的文
阅读全文
posted @ 2019-01-05 14:14
louis-sun
摘要:一:为什么需要函数 ①:减少代码冗余 ②:提高代码的已维护性 二:函数的定义 完成某一功能的程序指令的代码集合,称为函数 三:Golang的函数基本语法 四:函数参数的传递方式 ①:值传递,引用传递。两者的不同之处在于值传递是值得拷贝,而引用传递是地址的拷贝 ②:值传递:基本数据类型,int系列,f
阅读全文
posted @ 2019-01-05 12:55
louis-sun
摘要:在Golang中break和continue与php等语言作用一致,所不同的是在多层break和continue写法稍有区别。 一:使用标签break 如下图所示,想要跳出完成跳出循环,必须使用标签,否则默认只跳转break的上一层,continue同样的道理 备注:break只能终止循环语句,如s
阅读全文
posted @ 2019-01-03 20:35
louis-sun
摘要:在Golang中,for循环的定义和用法与其他编程语言大致一样,这里主要简述Go比较特殊和其他编程语言没有的地方。 一:for的死循环 使用for {}的写法相当于死循环 二:range方法结合for遍历字符串 ①:传统方法 ②:传统方法遍历英文字符串时能够非常完美的完成,但当遍历的是汉字时,却会出
阅读全文
posted @ 2019-01-03 20:29
louis-sun
摘要:一:switch/case后是一个表达式(即常量值,变量,或有返回值的函数) 二:case后的表达式与switch后的表达式,数据类型必须一致。 三:case后面可跟多个表达式。 四:case后面的表达式,常量不可重复。 ①:失败举例 ②:成功举例,使用变量规避该限制。 五:不需要break去终止c
阅读全文
posted @ 2019-01-03 18:01
louis-sun
摘要:一:if判断语句的三种情况 ①:单分支 if 条件判断语句 { 执行语句 } ②:双分支 if 条件判断语句 { 执行语句 }else{ 执行语句 } ③:多分支 if 条件判断语句 { 执行语句 }else if 条件判断语句{ 执行语句 }.... else{ 执行语句 } 二:条件判断语句基本
阅读全文
posted @ 2019-01-02 17:44
louis-sun
摘要:一:关系运算符,和php的一致,略。 二:逻辑运算符,和已知的php一致,略。 三:进制数,已在php中学习,略。 四:Golang中不存在三元运算符。 五:源码,反码,补码。 对于有符号的而言: ①:二进制的最高位是符号,0表示正数,1表示负数。 ②:正数的源码,反码,补码都一样。 1=> [补码
阅读全文
posted @ 2019-01-02 15:37
louis-sun
摘要:Golang中的算术运算符与python,php的定义用法大致一样,这里不再阐述,当需要注意的++与--两个算术运算符。 一:Go中不再有前++,后++与前--,后--之分,再Go中就是自加1和自减1,由下图可知 二:++与--必须单独成行 ①:正确的写法 ②:错误的写法
阅读全文
posted @ 2019-01-02 14:36
louis-sun
摘要:一:由26个大小写字母,0-9,_组成,如:var name_01 string; 二:不可以由数字开头,如:var 9name string 是错误的命名; 三:Golang中严格区分大小写如:var name string与var Name string 为两个不同的标识符; 四:标识符不能包含
阅读全文
posted @ 2019-01-02 14:24
louis-sun

浙公网安备 33010602011771号