CDz Blog

Think Different.

Golang学习笔记十五

资源管理与错误处理-defer

defer概念 defer其实就相当于Java中的try{}finally{}中finally用法.我们看一下defer的定义: 简单使用: func tryDefer() { file, err := os.Open("README.md") if err!=nil { panic(err) } defer file.Close()//...

Golang学习笔记十四

面向接口-函数式编程

函数式编程概念 在函数式编程中,应用最多的就是闭包。 在计算机科学中,闭包(英语:Closure),又称词法闭包(Lexical Closure)或函数闭包(function closures),是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。所以,有另一种说法认为闭包是由函数和与其相关的引用环境组合而成的实体。闭包在运行时可以有多...

Golang学习笔记十三

面向接口-常用系统接口

stringer接口 在print包下stringer接口 // Stringer is implemented by any value that has a String method, // which defines the ``native'' format for that value. // The String method is used to print values p...

Golang学习笔记十二

面向接口-接口组合

接口的组合(类似Java中接口的多继承) 在GO中,接口的组合,类似于Java中接口的多继承. 接着 上一篇继续定义两个接口: //定义一个post的接口 type Poster interface { Post(url string,params map[string]string)string } //接口组合: 定义一个 session接口 type Session i...

Golang学习笔记十一

面向接口-接口的定义与实现

上一篇我们介绍了duck typing概念,主要讲述GO语言中,如何解决duck typing中编译器不提示错误,和没有duck typing的Java灵活性不够问题. 如何定义一个接口 GO中定义接口可以使用关键字interface type Retriever interface { //使用interface关键字 Get(url string)string //接口的方法...

Golang学习笔记十

面向接口

duck typing概念 要理解duck typing的概念,先问一个问题.上图是不是一个鸭子? 在程序设计中,鸭子类型(英语:duck typing)是动态类型的一种风格。在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定的接口,而是由”当前方法和属性的集合”决定。这个概念的名字来源于由James Whitcomb Riley提出的鸭子测试(见下面的“历史”章...

记一次USDT安装流程

附精简流程

躺坑安装 usdt git地址:https://github.com/OmniLayer/omnicore 依赖: $yum install libtool $yum install gcc $yum install gcc-g++ $yum install make $yum install autoconfig $yum install automake 先安装git: yum...

Golang学习笔记九

面向"对象"-拓展已有的类型

如何拓展已有的类? 别名 组合 因为在GO语言中是没有继承的,所以对于拓展已有的类,我们常做的方法是,创建一个私有类,然后我们对需要推展的类,进行包装. 包装我们之前写的tree.Node: /** 拓展已有的类: 拓展我们自己写的tree.Node */ type myTreeNode struct { node *tree.Node //最好是指针 因为...

Golang学习笔记八

面向"对象"-Go自定义结构不能导入包?(GOPATH解密)

包 包的概念在很多编程语言都有,Go语言中包的概念还是挺有意思的. 一个目录下只有一个包 包的命名与目录可以不同(这点与Java不同) main包下有一个可执行入口,所以main方法只能在main包下执行 go语言不以文件为基本单元,而是包为基本单元,一个结构体可以是不同文件的组合但必须在同一包下 封装 采用camelCase命名规则 大写为public...

Golang学习笔记七

面向"对象"-结构体与方法

概念 go中的面向对象: 只能封装,没有继承与多态 没有class,定义结构体使用struct关键字 定义结构体 type treeNode struct { value int left, right *treeNode //指针 } 创建对象 var root treeNode root.value = 1 ro...