雪之梦技术驿站

收录了 18 篇文章 · 2 人关注

  • go 学习笔记之咬文嚼字带你弄清楚 defer 延迟函数

    # 延迟函数 ## 温故知新不忘延迟基础 ![go-error-defer-learn-from-old.jpg](https://tva1.sinaimg.cn/large/006y8mN6ly1g93hp2ux15j30gp08c0ts.jpg) ``` A "defer" statement invokes a function whose execution is deferred to the moment the surrounding function retu...

  • go 学习笔记之解读什么是defer延迟函数

    `Go` 语言中有个 `defer` 关键字,常用于实现**延迟函数**来保证关键代码的最终执行,常言道: "未雨绸缪方可有备无患". **延迟函数**就是这么一种机制,无论程序是正常返回还是异常报错,只要存在延迟函数都能保证这部分关键逻辑最终执行,所以用来做些**资源清理**等操作再合适不过了. ![go-error-about-defer.jpg](https://upload-images.jianshu.io/upload_images/16648241-fd49fdabb4...

  • go 学习笔记之10 分钟简要理解 go 语言闭包技术

    **闭包**是主流编程语言中的一种**通用技术**,常常和**函数式编程**进行强强联合,本文主要是介绍 `Go` 语言中什么是闭包以及**怎么理解闭包**. 如果读者对于 `Go` 语言的闭包**还不是特别清楚**的话,可以**参考上一篇文章** [go 学习笔记之仅仅需要一个示例就能讲清楚什么闭包](https://mp.weixin.qq.com/s/ZIIBvCuDgrsdNbQXBeAR9A). 或者也可以**直接无视**,因为接下来会**回顾一下前情概要**,现在你准备好...

  • go 学习笔记之仅仅需要一个示例就能讲清楚什么闭包

    本篇文章是 `Go` 语言学习笔记之**函数式编程**系列文章的第二篇,上一篇介绍了函数基础,这一篇文章重点介绍函数的重要应用之一: **闭包** 空谈误国,实干兴邦,以具体代码示例为基础讲解**什么是闭包**以及为什么需要闭包等问题,下面我们沿用上篇文章的示例代码开始本文的学习吧! > **斐波那契数列**是形如 `1 1 2 3 5 8 13 21 34 55` 的**递增**数列,即从第三个数开始,后一个数字是**前两个数字之和**,保持此规律无限递增... ![go-f...

  • go 学习笔记之学习函数式编程前不要忘了函数基础

    在编程世界中向来就没有一家独大的**编程风格**,至少目前还是**百家争鸣**的春秋战国,除了众所周知的**面向对象编程**还有日渐流行的**函数式编程**,当然这也是本系列文章的重点. 越来越多的主流语言在设计的时候几乎无一例外都会参考**函数式特性**( `lambda` 表达式,原生支持 `map,reduce...`),就连面向对象语言的 `Java8` 也慢慢开始支持函数式编程,所以再不学习函数式编程可能就晚了! ![go-functional-programming-ab...

  • go 学习笔记之无心插柳柳成荫的接口和无为而治的空接口

    如果你还了解编程概念中的接口概念,那么我建议你最好还是先阅读上一篇文章.详情请点击 [go 学习笔记之万万没想到宠物店竟然催生出面向接口编程?](https://mp.weixin.qq.com/s/Y2ZfdFUO2QMgWQY5jP0VaA) ,否则的话,请自动忽略上文,继续探索 `Go` 语言的接口有什么不同之处. > 如无法自动跳转到公众号「雪之梦技术驿站」文章,可以点击我的头像,动动你的小手翻翻历史文章,相信聪明的你一定可以找到相关文章. 接口是面向对象编程...

  • go 学习笔记之万万没想到宠物店竟然催生出面向接口编程?

    ## 到底是要猫还是要狗 在上篇文章中,我们编撰了一则简短的小故事用于讲解了什么是面向对象的继承特性以及 `Go` 语言是如何实现这种继承语义的,这一节我们将继续探讨新的场景,希望能顺便讲解面向对象的接口概念. 为了照顾到没有看过上一节文章的读取,这里再简述一下上节文章关于买宠物的故事,如需详细了解,请自行翻阅历史文章进行查看. A: 猫是一种宠物,淘气可爱会卖萌,看家本领抓老鼠,偶尔还会喵喵喵. B: 狗是一种宠物,忠实听话能看家,嗅觉灵敏会破案,一言不合汪汪汪. C: ...

  • go 学习笔记之详细说一说封装是怎么回事

    关注公众号[雪之梦技术驿站]查看上篇文章 猜猜看go是不是面向对象语言?能不能面向对象编程? 虽然在上篇文章中,我们通过尝试性学习探索了 Go 语言中关于面向对象的相关概念,更确切的说是关于封装的基本概念以及相关实现. 但那还远远不够,不能满足于一条路,而是应该尽可能地多走几条路,只有这样才能为以后可能遇到的问题积攒下来经验,所以这一节我们将继续探索封装. 何为探索性学习 通过现有知识加上思想规则指导不断猜想假设逐步验证的学习过程是探索性学习,这样既有利于我们思考又能加深我们对新知识的理解,何乐...

  • go 学习笔记之是否支持以及如何实现继承

    熟悉面向对象的小伙伴们可能会知道封装,继承和多态是最主要的特性,为什么前辈们会如此看重这三种特性,真的那么重要吗? ![go-oop-inheritance-concept.jpeg](https://upload-images.jianshu.io/upload_images/16648241-82498195b3e8d051.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ## 什么是封装 什么是封装,封装...

  • go 学习笔记之初识 go 语言

    ![go-index-gopher.jpg](https://upload-images.jianshu.io/upload_images/16648241-0ce9d0d029fd108a?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) `Go` 是一种开源编程语言,可以轻松构建**简单**,**可靠**,**高效**的软件. > 摘录自 github: [https://github.com/golang/go](htt...

  • go 学习笔记之环境搭建

    千里之行始于足下,开始 `Go` 语言学习之旅前,首先要搭建好本地开发环境,然后就可以放心大胆瞎折腾了. `Go` 的环境安装和其他语言安装没什么特别注意之处,下载安装包下一步下一步直到完成,可能唯一需要注意的就是 `$GOPATH` 环境变量的设置问题. 不过,简单起见,目前采用默认配置,等到比较熟悉 `Go` 语言时候再自定义设置也不迟,因此采用喜闻乐见的傻瓜式安装方式吧! ![go-base-setup-index.png](https://upload-images.j...

  • go 学习笔记之工作空间

    搭建好 `Go` 的基本环境后,现在可以正式开始 `Go` 语言的学习之旅,初学时建议在默认的 `GOPATH` 工作空间规范编写代码,基本目录结构大概是这个样子. ```bash . |-- bin | `-- hello.exe |-- pkg | `-- windows_amd64 | `-- github.com | `-- snowdreams1006 | `-- learn-go | ...

  • go 学习笔记之走进Goland编辑器

    工欲善其事必先利其器,命令行工具虽然能够在一定程度上满足基本操作的需求,但实际工作中总不能一直使用命令行工具进行编码操作吧? 学习 `Go` 语言同样如此,为此需要寻找一个强大的 `IDE` 集成环境帮助我们快速开发,据我所知,市面上比较流行的可能有三个选择: - `LiteIDE X` : [`LiteIDE`](http://liteide.org/cn/) 是一款简单,开源,跨平台的 `Go IDE`. - `GoLand` : [`GoLand`](https://www....

  • go 学习笔记之有意思的变量和不安分的常量

    首先希望学习 `Go` 语言的爱好者至少拥有其他语言的编程经验,如果是完全零基础的小白用户,本教程可能并不适合阅读或尝试阅读看看,系列笔记的目标是站在其他语言的角度学习新的语言,理解 `Go` 语言,进而写出真正的 `Go` 程序. 编程语言中一般都有变量和常量的概念,对于学习新语言也是一样,变量指的是不同编程语言的特殊之处,而常量就是编程语言的共同点. 学习 `Go` 语言时尽可能站在宏观角度上分析变量,而常量可能一笑而过或者编程语言不够丰富,所谓的常量其实也是变量,不管怎么样现在...

  • go 学习笔记之值得特别关注的基础语法有哪些

    在上篇文章中,我们动手亲自编写了第一个 `Go` 语言版本的 `Hello World`,并且认识了 `Go` 语言中有意思的变量和不安分的常量. 相信通过上篇文章的斐波那契数列,你已经初步掌握了 `Go` 语言的变量和常量与其他主要的编程语言的异同,为了接下来更好的学习和掌握 `Go` 的基础语法,下面先简单回顾一下变量和常量相关知识. ## 有意思的变量和不安分的常量 - 变量默认初始化有零值 ```go func TestVariableZeroValue(t *...

  • go 学习笔记之数组还是切片都没什么不一样

    上篇文章中详细介绍了 `Go` 的基础语言,指出了 `Go` 和其他主流的编程语言的差异性,比较侧重于语法细节,相信只要稍加记忆就能轻松从已有的编程语言切换到 `Go` 语言的编程习惯中,尽管这种切换可能并不是特别顺畅,但多加练习尤其是多多试错,总是可以慢慢感受 `Go` 语言之美! 在学习 `Go` 的内建容器前,同样的,我们先简单回顾一下 `Go` 的基本语言,温度而知新可以为师矣! ## 上节知识回顾 > 如需了解详情,请于微信公众号[雪之梦技术驿站]内查看 [go 学习...

  • go 学习笔记之数组还是切片都没什么不一样

    上篇文章中详细介绍了 `Go` 的基础语言,指出了 `Go` 和其他主流的编程语言的差异性,比较侧重于语法细节,相信只要稍加记忆就能轻松从已有的编程语言切换到 `Go` 语言的编程习惯中,尽管这种切换可能并不是特别顺畅,但多加练习尤其是多多试错,总是可以慢慢感受 `Go` 语言之美! 在学习 `Go` 的内建容器前,同样的,我们先简单回顾一下 `Go` 的基本语言,温度而知新可以为师矣! ## 上节知识回顾 > 如需了解详情,请于微信公众号[雪之梦技术驿站]内查看 [go 学习...

  • go 学习笔记之go是不是面向对象语言是否支持面对对象编程?

    ![go-oop-about-oop-elephant.jpg](https://upload-images.jianshu.io/upload_images/16648241-278df750df5691ca.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 面向对象编程风格深受广大开发者喜欢,尤其是以 `C++`, `Java` 为典型代表的编程语言大行其道,十分流行! 有意思的是这两中语言几乎毫无意外都来源于 `...