<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[cdzjava的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/cdzjava</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; cdzjava]]></copyright><item><title><![CDATA[Go语言学习笔记十五--资源管理与错误处理-defer]]></title><link>https://blog.youkuaiyun.com/cdzjava/article/details/87187290</link><guid>https://blog.youkuaiyun.com/cdzjava/article/details/87187290</guid><author>cdzjava</author><pubDate>Wed, 13 Feb 2019 16:07:22 +0800</pubDate><description><![CDATA[defer概念
defer其实就相当于Java中的try{}finally{}中finally用法.我们看一下defer的定义:
简单使用:
func tryDefer() {
    file, err := os.Open(&quot;README.md&quot;)
    if err!=nil {
        panic(err)
    }
    defer file.Close()//直接在这里写...]]></description><category></category></item><item><title><![CDATA[Go语言学习笔记十四--面向接口-函数式编程]]></title><link>https://blog.youkuaiyun.com/cdzjava/article/details/87187213</link><guid>https://blog.youkuaiyun.com/cdzjava/article/details/87187213</guid><author>cdzjava</author><pubDate>Wed, 13 Feb 2019 16:06:08 +0800</pubDate><description><![CDATA[函数式编程概念
在函数式编程中，应用最多的就是闭包。

在计算机科学中，闭包（英语：Closure），又称词法闭包（Lexical Closure）或函数闭包（function closures），是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在，即使已经离开了创造它的环境也不例外。所以，有另一种说法认为闭包是由函数和与其相关的引用环境组合而成的实体。闭包在运行时可以有多个实例，不...]]></description><category></category></item><item><title><![CDATA[Go语言学习笔记十三--面向接口-常用系统接口]]></title><link>https://blog.youkuaiyun.com/cdzjava/article/details/87187138</link><guid>https://blog.youkuaiyun.com/cdzjava/article/details/87187138</guid><author>cdzjava</author><pubDate>Wed, 13 Feb 2019 16:05:10 +0800</pubDate><description><![CDATA[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 pass...]]></description><category></category></item><item><title><![CDATA[Go语言学习笔记十二--面向接口-接口组合]]></title><link>https://blog.youkuaiyun.com/cdzjava/article/details/87187097</link><guid>https://blog.youkuaiyun.com/cdzjava/article/details/87187097</guid><author>cdzjava</author><pubDate>Wed, 13 Feb 2019 16:04:31 +0800</pubDate><description><![CDATA[接口的组合（类似Java中接口的多继承）
在GO中,接口的组合,类似于Java中接口的多继承.
接着 上一篇继续定义两个接口:
//定义一个post的接口
type Poster interface {
    Post(url string,params map[string]string)string
}

//接口组合： 定义一个 session接口
type Session interfa...]]></description><category></category></item><item><title><![CDATA[Go语言学习笔记十一--面向接口-接口的定义与实现]]></title><link>https://blog.youkuaiyun.com/cdzjava/article/details/87187061</link><guid>https://blog.youkuaiyun.com/cdzjava/article/details/87187061</guid><author>cdzjava</author><pubDate>Wed, 13 Feb 2019 16:04:00 +0800</pubDate><description><![CDATA[上一篇我们介绍了duck typing概念,主要讲述GO语言中,如何解决duck typing中编译器不提示错误,和没有duck typing的Java灵活性不够问题.
如何定义一个接口
GO中定义接口可以使用关键字interface
type Retriever interface { //使用interface关键字
    Get(url string)string //接口的方法
}

接...]]></description><category></category></item><item><title><![CDATA[Go语言学习笔记十--面向接口]]></title><link>https://blog.youkuaiyun.com/cdzjava/article/details/87187008</link><guid>https://blog.youkuaiyun.com/cdzjava/article/details/87187008</guid><author>cdzjava</author><pubDate>Wed, 13 Feb 2019 16:03:23 +0800</pubDate><description><![CDATA[duck typing概念

要理解duck typing的概念,先问一个问题.上图是不是一个鸭子?

在程序设计中，鸭子类型（英语：duck typing）是动态类型的一种风格。在这种风格中，一个对象有效的语义，不是由继承自特定的类或实现特定的接口，而是由&quot;当前方法和属性的集合&quot;决定。这个概念的名字来源于由James Whitcomb Riley提出的鸭子测试（见下面的“历史”章节），“鸭子测试...]]></description><category></category></item><item><title><![CDATA[Go语言学习笔记九--面向"对象"-拓展已有的类型]]></title><link>https://blog.youkuaiyun.com/cdzjava/article/details/87186968</link><guid>https://blog.youkuaiyun.com/cdzjava/article/details/87186968</guid><author>cdzjava</author><pubDate>Wed, 13 Feb 2019 16:02:46 +0800</pubDate><description><![CDATA[如何拓展已有的类?

别名
组合

因为在GO语言中是没有继承的,所以对于拓展已有的类,我们常做的方法是,创建一个私有类,然后我们对需要推展的类,进行包装.
包装我们之前写的tree.Node:
/**
拓展已有的类:

拓展我们自己写的tree.Node
 */

type myTreeNode struct {
    node *tree.Node //最好是指针 因为go特性声明指针 就会...]]></description><category></category></item><item><title><![CDATA[USDT(omnicore)钱包Linux躺坑安装--附精简流程]]></title><link>https://blog.youkuaiyun.com/cdzjava/article/details/86622442</link><guid>https://blog.youkuaiyun.com/cdzjava/article/details/86622442</guid><author>cdzjava</author><pubDate>Thu, 24 Jan 2019 10:47:35 +0800</pubDate><description><![CDATA[躺坑安装
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 instal...]]></description><category></category></item><item><title><![CDATA[golang学习笔记八--Go自定义结构不能导入包?(GOPATH解密)]]></title><link>https://blog.youkuaiyun.com/cdzjava/article/details/86599724</link><guid>https://blog.youkuaiyun.com/cdzjava/article/details/86599724</guid><author>cdzjava</author><pubDate>Tue, 22 Jan 2019 19:02:26 +0800</pubDate><description><![CDATA[包
包的概念在很多编程语言都有,Go语言中包的概念还是挺有意思的.

一个目录下只有一个包
包的命名与目录可以不同(这点与Java不同)
main包下有一个可执行入口,所以main方法只能在main包下执行
go语言不以文件为基本单元,而是包为基本单元,一个结构体可以是不同文件的组合但必须在同一包下

封装

采用camelCase命名规则
大写为public
小写为private

不能导入自定...]]></description><category></category></item><item><title><![CDATA[Go语言学习笔记七--面向"对象"-结构体与方法]]></title><link>https://blog.youkuaiyun.com/cdzjava/article/details/86549370</link><guid>https://blog.youkuaiyun.com/cdzjava/article/details/86549370</guid><author>cdzjava</author><pubDate>Sat, 19 Jan 2019 10:16:40 +0800</pubDate><description><![CDATA[概念
go中的面向对象:

只能封装,没有继承与多态
没有class,定义结构体使用struct关键字

定义结构体
type treeNode struct {
    value       int
    left, right *treeNode //指针
}

创建对象
    var root treeNode
    root.value = 1
    root.left = &amp;a...]]></description><category></category></item><item><title><![CDATA[Go语言学习笔记六--string编码]]></title><link>https://blog.youkuaiyun.com/cdzjava/article/details/86549352</link><guid>https://blog.youkuaiyun.com/cdzjava/article/details/86549352</guid><author>cdzjava</author><pubDate>Sat, 19 Jan 2019 10:15:22 +0800</pubDate><description><![CDATA[分解探索string编码
转为byte数组
func main() {
    s := &quot;Hi小智加油!&quot;

    fmt.Println(&quot;len(s):&quot;,len(s)) //len(s): 15 为什么是15呢?

    for _, v := range []byte(s) {
        fmt.Printf(&quot;%X &quot;,v) //%X 转为16进制
        //48 ...]]></description><category></category></item><item><title><![CDATA[Go语言学习笔记五--map]]></title><link>https://blog.youkuaiyun.com/cdzjava/article/details/86549327</link><guid>https://blog.youkuaiyun.com/cdzjava/article/details/86549327</guid><author>cdzjava</author><pubDate>Sat, 19 Jan 2019 10:13:51 +0800</pubDate><description><![CDATA[map的创建
func main() {
    //创建 map
    studens := map[string]string{
        &quot;name&quot;: &quot;张三&quot;,
        &quot;age&quot;:  &quot;18&quot;,
        &quot;sex&quot;:  &quot;男&quot;,
    } //直接创建有值的map 

    var m2 map[string]int  //map == nil

 ]]></description><category></category></item><item><title><![CDATA[Go语言学习笔记四--数组与切片]]></title><link>https://blog.youkuaiyun.com/cdzjava/article/details/86549288</link><guid>https://blog.youkuaiyun.com/cdzjava/article/details/86549288</guid><author>cdzjava</author><pubDate>Sat, 19 Jan 2019 10:11:28 +0800</pubDate><description><![CDATA[数组
创建数组

定义数组也准寻golang的基本定义习惯,变量类型在前,变量名在后

/**
创建一个数组
 */
func createArrays() {
    //第一种 定义数组 
    var arr1 [5]int  //不指定数组值,默认int为0

    //第二种 定义数组方式
    arr2 := [3]int{1, 2, 3} //设置初始值

    //可变长度...]]></description><category></category></item><item><title><![CDATA[Go语言学习笔记三--基础语法]]></title><link>https://blog.youkuaiyun.com/cdzjava/article/details/86549275</link><guid>https://blog.youkuaiyun.com/cdzjava/article/details/86549275</guid><author>cdzjava</author><pubDate>Sat, 19 Jan 2019 10:09:53 +0800</pubDate><description><![CDATA[函数
在golang中函数是作为一等公民存在的,而这个一等公民,我理解得意思就是可以在任何地方使用到函数,函数中参数可以是函数,返回也可以是函数.
正常定义函数
/**
正常定义函数,(还是准寻golang定义原则变量名在前,变量类型在后,如果多个参数类型一致可以一起定义)
*/
func eval(a, b int, op string) int {
    switch op {
    ca...]]></description><category></category></item><item><title><![CDATA[Go语言学习笔记二--判断语言]]></title><link>https://blog.youkuaiyun.com/cdzjava/article/details/86549248</link><guid>https://blog.youkuaiyun.com/cdzjava/article/details/86549248</guid><author>cdzjava</author><pubDate>Sat, 19 Jan 2019 10:08:00 +0800</pubDate><description><![CDATA[if语句

if语言demo,可以看出 if语句后条件不需要加()

/**
if语言demo,可以看出 if语句后条件不需要加()
*/
func ifDemo() {

	const filename = &quot;adc.txt&quot;

	bytes, e := ioutil.ReadFile(filename) //golang返回值可以是多个,需要多个值来接收

	if e != nil {
		f...]]></description><category></category></item><item><title><![CDATA[Go语言学习笔记一--基础语法]]></title><link>https://blog.youkuaiyun.com/cdzjava/article/details/86549199</link><guid>https://blog.youkuaiyun.com/cdzjava/article/details/86549199</guid><author>cdzjava</author><pubDate>Sat, 19 Jan 2019 10:04:41 +0800</pubDate><description><![CDATA[学习Golang原因,也是因为自己比较懒,早在6月份时候就想要去学习Golang,一直拖到现在才开始.首先因为区块链技术领域中有很多框架/系统的编写使用golang来写,追述其根源也引起自己学习的第二个原因,这是一个能够支持极高并发的语言,其诞生所解决的痛点便是高性能服务器,且语言简洁优美.其对于并发在底层与其他语言(java等)是不同的操作,现在还只有一些模糊的概念在心里,并不能讲的非常清楚,愿...]]></description><category></category></item></channel></rss>