10 2018 档案
摘要:struct struct定义结构,结构由字段(field)组成,每个field都有所属数据类型,在一个struct中,每个字段名都必须唯一。 说白了就是拿来存储数据的,只不过可自定义化的程度很高,用法很灵活,Go中不少功能依赖于结构,就这样一个角色。 Go中不支持面向对象,面向对象中描述事物的类的
阅读全文
摘要:defer关键字 defer关键字可以让 函数或语句 延迟到函数语句块的最结尾时,即即将退出函数时执行,即便函数中途报错结束、即便已经panic()、即便函数已经return了,也都会执行defer所推迟的对象。 其实defer的本质是,当在某个函数中使用了defer关键字,则创建一个独立的defe
阅读全文
摘要:回调函数和闭包 当函数具备以下两种特性的时候,就可以称之为高阶函数(high order functions): 1. 函数可以作为另一个函数的参数(典型用法是回调函数) 2. 函数可以返回另一个函数,即让另一个函数作为这个函数的返回值(典型用法是闭包) 一般来说,附带的还具备一个特性:函数可以作为
阅读全文
摘要:Go中函数特性简介 对Go中的函数特性做一个总结。懂则看,不懂则算。 1. Go中有3种函数:普通函数、匿名函数(没有名称的函数)、方法(定义在struct上的函数)。 2. Go编译时不在乎函数的定义位置,但建议init()定义在最前面(如果有的话),main函数定义在init()之后,然后再根据
阅读全文
摘要:条件判断结构:if else 分支选择结构:switch case 循环结构:for break:退出for或switch结构(以及select) continue:进入下一次for迭代 虽然Go是类C的语言,但Go在这些流程控制语句中的条件表达式部分不使用括号。甚至有些时候使用括号会报错,但有些复
阅读全文
摘要:Go不会对数据进行隐式的类型转换,只能手动去执行转换操作。 简单的转换操作 转换数据类型的方式很简单。 例如: Go允许在底层结构相同的两个类型之间互转。例如: 但注意: 1. 不是所有数据类型都能转换的,例如字母格式的string类型"abcd"转换为int肯定会失败 2. 低精度转换为高精度时是
阅读全文
摘要:每一个变量都有数据类型,Go中的数据类型有: 简单数据类型 :int、float、complex、bool和string 数据结构或组合(composite) :struct、array、slice、map和channel 接口(interface) 当声明变量的时候,会做默认的赋0初始化。每种数据
阅读全文
摘要:常量(Constants)和iota 常量包含不会发生更改的数据。常量的数据类型只能是boolean、number(int/float/complex)或string。 定义方式: TYPE基本可以省略,因为常量都是简单数据类型,编译器可以根据值推断出它的数据类型。 例如: 常量在编译期间被评估,因
阅读全文
摘要:Go里的map用于存放key/value对,在其它地方常称为hash、dictionary、关联数组,这几种称呼都是对同一种数据结构的不同称呼,它们都用于将key经过hash函数处理,然后映射到value,实现一一对应的关系。 map的内部结构 一个简单的map结构示意图: 在向map中存储元素的时
阅读全文
摘要:slice表示切片(分片),例如对一个数组进行切片,取出数组中的一部分值。在现代编程语言中,slice(切片)几乎成为一种必备特性,它可以从一个数组(列表)中取出任意长度的子数组(列表),为操作数据结构带来非常大的便利性,如python、perl等都支持对数组的slice操作,甚至perl还支持对h
阅读全文
摘要:了解Python、Perl、JavaScript的人想必都知道它们的数组是动态的,可以随需求自动增大数组长度。但Go中的数组是固定长度的,数组一经声明,就无法扩大、缩减数组的长度。但Go中也有类似的动态"数组",称为slice数据结构,在下一篇文章会详细解释它。 Go中的数组是slice和map两种
阅读全文
摘要:import导入包 搜索路径 import用于导入包: 编译器会根据上面指定的相对路径去搜索包然后导入,这个相对路径是从GOROOT或GOPATH(workspace)下的src下开始搜索的。 假如go的安装目录为 ,也就是说 ,而GOPATH环境变量 ,那么要搜索 包的时候,将按照 如下顺序 进行
阅读全文
摘要:hello world 从一个简单的程序开始解释,将下面的内容放进test.go文件中,路径随意: Go通过包的方式管理程序,每个Go源代码文件都必须声明自己所在的包,正如上面的 声明自己所在的包是main包。 每个程序都必须有一个main包,main包作为整个程序的编译入口包,main包中的mai
阅读全文
摘要:Go语言不是一门面向对象的语言,没有对象和继承,也没有面向对象的多态、重写相关特性。 Go所拥有的是数据结构,它可以关联方法。Go也支持简单但高效的组合(Composition),请搜索面向对象和组合。 虽然Go不支持面向对象,但Go通过定义数据结构的方式,也能实现与Class相似的功能。 一个简单
阅读全文
摘要:前面带有 符号的是 待补充文章 ,有些可能在随后会跟着补上,有些可能有缘再补😄。 Python语法基础 菜鸟一枚,错误在所难免,还望发现错误后能够提出 。 1. 基础数据类型 "数值类型" "布尔类型和逻辑运算" "等值和大小比较" "字符串" "字符串(string)方法整理" "字符串格式化输
阅读全文
摘要:1.Go简介 Go语言是编译型、静态类型的类C的语言,并带有GC(垃圾收集器,garbage collection)。这意味着什么? 另外, Go是一种非常严格的语言,它几乎总是要求我们"以标准答案去答题",在其它语言可以容忍的不规范编码方式在Go语言中几乎都会抛异常 。例如导入了包却没有使用这个包
阅读全文
摘要:这个系列写的不是很好,未来重构。 Go基础系列 |Go基础|Go基础| | | | | "1.Go简介" | "2.Go数据结构struct" | | "3.构建Go程序" | "4.import导包和初始化阶段" | | "5.array" | "6.Slice详解" | | "7.map" |
阅读全文
摘要:本系列: "Perl面向对象(1):从代码复用开始" "Perl面向对象(2):对象" "Perl面向对象(3):解构——对象销毁" 第3篇依赖于第2篇,第2篇依赖于1篇。 perl中使用引用计数的方式管理内存,对象也是引用,所以对象的销毁也是由引用计数的管理方式进行管理的。也就是说,当一个对象(也
阅读全文
摘要:本系列: "Perl面向对象(1):从代码复用开始" "Perl面向对象(2):对象" "Perl面向对象(3):解构——对象销毁" 第3篇依赖于第2篇,第2篇依赖于1篇。 已有的代码结构 现在有父类Animal,子类Horse,它们的代码分别如下: lib/Animal.pm中: lib/Hors
阅读全文
摘要:官方手册:http://perldoc.perl.org/perlobj.html 本系列: "Perl面向对象(1):从代码复用开始" "Perl面向对象(2):对象" "Perl面向对象(3):解构——对象销毁" 第3篇依赖于第2篇,第2篇依赖于1篇。 Perl面向对象的三个准则 1. 类就是包
阅读全文
摘要:1.普通的粘贴快捷键设置: 我设置成 。但是注意,有些程序里ctrl有特殊功能,这样 键会出现问题,所以建议将粘贴快捷键设置的复杂一点,例如 ,`ctrl+alt+shift+[0 9]`等等。 然后对着要复制的东西,一顿 ,然后分别用 粘贴即可。 注意,ditto采用的是 先进后出 的模型,后复制
阅读全文
摘要:当写好一个或多个模块后,可以将它构建、打包成"tar.gz",以便让别人安装或者上传到CPAN(如果愿意的话)。对于模块的使用者来说,也不用再使用 来找pm文件,安装后一般都会安装到 路径下,然后直接使用 即可。 Module::Starter 在很早以前,使用h2xz工具,但它实在太古老了。现在很
阅读全文
摘要:官方手册:https://perldoc.perl.org/perlpod.html POD文档是perl的man文档,可以用perldoc输出,也可以直接用man输出。在开始下面的文章之前,请先粗略浏览一到两篇perldoc文档,或去CPAN找几个模块的文档浏览下大致格式。 例如: 执行perld
阅读全文
摘要:这是5个特殊的代码块。要理解这几个块,关键在于几个时间点: (1).程序编译期间 (2).程序执行期间 (3).程序执行结束但还未退出期间 BEGIN块 BEGIN块是在程序编译期间执行的,也就是上面的步骤(1)所在期间 即使程序中出现了语法错误,BEGIN块也会执行 如果出现了多个BEGIN块,则
阅读全文
摘要:单文件版的perl程序只能用于构建较小的脚本程序。当代码规模较大时,应该遵循下面两条规则来构建程序。这样能将程序的各个部分按功能一个一个地细化,便于维护,也便于后续开发。 名称空间和包 名称空间用于组织逻辑逻辑代码和数据,一个 名称空间由一个包名,包内的所有子程序名以及包变量构成 ,出了这个名称空间
阅读全文
摘要:名称冲突问题 假如在sum2.pm中使用require导入了一个代码文件sum1.pm: 如果在sum1.pm中也有一个sum子程序: 那么在运行sum2.pm的时候,将警告子程序重新定义。因为sum2.pm首先编译好自己的sum(),然后在 运行期间require 导入文件时,又再次定义sum()
阅读全文
摘要:从函数复用开始:eval和do执行perl文件 当我们定义了一个功能比较通用的子程序,比如获取数值的绝对值。想要到处使用这个子程序,就得不断复制、粘贴这段绝对值函数的定义文本。显然,这是不太理想的方式。 于是,就将包含这个子程序的代码放进一个perl文件,然后通过特殊的语法去导入这个文件。 例如,文
阅读全文
摘要:man 1 getopt翻译 : "https://www.cnblogs.com/f ck need u/p/9757959.html" 写shell脚本的时候,通过while、case、shift来设计脚本的命令行选项是一件比较麻烦的事,因为Unix命令行的选项和参数自由度很高,支持短选项和长选
阅读全文
摘要:NAME getopt 解析命令行选项(加强版) SYNOPSIS (译注: 1. 后面的译文中将分别称呼这3种语法格式为语法1、语法2、语法3 2. 请区分option、parameter、argument、option argument、non option parameter。如不清楚,请参考
阅读全文
摘要:xargs具有并行处理的能力,在处理大文件时,如果应用得当,将大幅提升效率。 xargs详细内容(全网最详细): "https://www.cnblogs.com/f ck need u/p/5925923.html" 效率提升测试结果 先展示一下使用xargs并行处理提升的效率,稍后会解释下面的结
阅读全文
摘要:1.tee多重定向 tee的作用是将一份标准输入多重定向,一份重定向到标准输出/dev/stdout,然后还将标准输入重定向到每个文件FILE中。 例如: 上面第一个命令将alpha.log的文件内容重定向给file{1..3}和标准输出通过管道传递给cat; 上面第二个命令将alpha.log的文
阅读全文
摘要:bash提供了两个内置命令:readarray和mapfile,它们是同义词。它们的作用是从标准输入读取一行行的数据,然后每一行都赋值给一个数组的各元素。显然,在shell编程中更常用的是从文件、从管道读取,不过也可以从文件描述符中读取数据。 需要先说明的是,shell并不像其它专门的编程语言对数组
阅读全文
摘要:正则表达式两篇: "基础正则" "Perl正则" 本文是对Perl正则的一点扩展,主要内容是使用 创建正则对象,以及一些其它的技巧。 qr\/\/创建正则对象 因为可以在正则模式中使用变量替换,所以我们可以将正则中的一部分表达式事先保存在变量中。例如: 但是,这样缺陷很大,在保存正则表达式的变量中存
阅读全文
摘要:目前还没介绍Perl的面向对象,所以这节内容除了几个注意点,没什么可讲的。 以前经常使用大写字母的句柄方式(即所谓的裸字文件句柄,bareword filehandle),现在可以考虑转向使用变量文件句柄的形式,因为只有使用变量句柄的方式,才能创建文件句柄引用。 不管使用裸字还是变量文件句柄的方式,
阅读全文
摘要:在Perl中,子程序的引用常用来做回调函数(callback)、闭包(closure),特别是匿名子程序。 回调函数(callback) 关于什么是回调函数,见 "一文搞懂:词法作用域、动态作用域、回调函数、闭包" 以 模块的find函数为例,它用来搜索给定目录下的文件,然后对每个搜索到的文件执行一
阅读全文
摘要:把以前一直只限于知道,却不清晰理解的这几个概念完完整整地梳理了一番。内容参考自wiki页面,然后加上自己一些理解。 词法作用域和动态作用域 不管什么语言,我们总要学习作用域(或生命周期)的概念,比如常见的称呼:全局变量、包变量、模块变量、本地变量、局部变量等等。不管如何称呼这些作用域的范围,实现它们
阅读全文
浙公网安备 33010602011771号