07 2018 档案
摘要:Go并发特点 goroutine只是由官方实现的超级"线程池"而已,每个实例4 5kb的栈内存占用和用于实现机制而大幅减少的创建和销毁开销。 并发不是并行(多CPU): 并发主要由切换时间片来实现"同时"运行,并行则是直接利用多核实现多线程的运行,但Go可以设置使用核数,以发挥多核计算机的能力。 通
阅读全文
摘要:反射的知识点比较晦涩,后期会对此知识点展开深入的分析及示例代码展示 反射可达大提高程序的灵活性,使得inferface{}有更大的发挥余地 反射使用TypeOf和ValueOf函数从接口中获取目标对象信息:字段属性,方法信息 示例2 通过反射可以"动态"调用方法
阅读全文
摘要:接口是一个或多个方法签名名的集合,定义方式如下 `type Interface_Name interface { method_a() string method_b() int .... } ` 只要某个类型拥有该接口的所有方法签名,就算实现该接口,无需显示声明实现了那个接口,这称为structu
阅读全文
摘要:Go没有类似python语言中类class的概念,但依旧有method 类型方法定义格式如下 `func (a mytype) method_name(x type)(y type){ return y }` 调用方式: 通过显示的说明Receiver(强制函数传递的第一个参数)来实现与某个类型(s
阅读全文
摘要:结构体struct类似python语言中的类class,结构体类的元素可以是一个变量,或者函数或者其它的类型,好比python的属性和方法。 简单的方式进行结构体的初始化 struct也是一个 ,也就是说传递的时候,拷贝的是值,正常途径无法改变结构内的值,需通过 的方式进行修改 推荐结构体初始化时,
阅读全文
摘要:defer 匿名函数特性 执行方式类似其它语言中的析构函数,在函数体执行结束后按照调用顺序的 逐个执行 即使函数发生 也会执行,类似于try...except 常用于 资源清理,文件关闭,解锁以及记录时间等操作 支持匿名函数的调用 通过于匿名函数配合可在return之后修改函数计算的结果 如果函数体
阅读全文
摘要:函数function Go函数不支持 嵌套, 重载和默认参数 支持以下特性: 无须声明原型,不定长度长度变参,多返回值,命名返回值参数,匿名函数,闭包 定义函数使用关键字func,且左侧大括号不能另起一行 函数也可以作为一种类型使用 函数名可以理解为内存地址的编号,可以被用来赋值操作。 匿名函数,不
阅读全文
摘要:之前使用python编写了一段代码实现了工作量证明机制,近期由于参与以太坊智能合约开发钱包的工作接触到golang语言,所以借此以go来实现Pow(Proof of work). 实现代码如下: 运行代码可知 :当PowProcess函数条件设置越苛刻(即0的个数越多),其工作量难度越大,CPU在计
阅读全文
摘要:map 类似python语言中的dict(字典类型),以key value形式存储数据 Key必须是支持 或`!=`比较运算的类型,不可以是函数,map或slice map查找比线性搜素快很多,但比使用索引访问数据的类型慢100倍 map使用make()函数创建,支持 赋值的简单写法 嵌套map:
阅读全文
摘要:切片Slice在go语言中是单独的类型(指向底层的数组),不同于python(对可迭代对象操作的工具),注意区分数组和slice的区别 定义一个空slice,格式 ,这种既没有长度也没有元素赋值的类型(相比叫array) 数组的基本操作如下 ,类似与python中列表切片的操作,详见实例 使用mak
阅读全文
摘要:基本特性 格式: ,n 0 如: var a [10]int 表示,定义一个长度为10,元素类型为int性的数组 数组长度: 长度(len)也是数组类型的一部分,因此具有不同长度的数组为不同的类型。 如 注意区分指向数组的指针和指针数组 数组在Go中属于值类型 数组之间可以使用 或`!= ,比较是否
阅读全文
摘要:go基础之控制语句 补充知识 指针 与其他语言不同,在Go中不支持指针运算即->运算符,而直接采用.选择符来操作指针目标对象的成员。 操作符&取变量的地址,使用*通过指针间间接访问目标对象 默认值位nil,而非NULL 实例代码如下 //指针的使用 package main import "fmt"
阅读全文