ESLint, Prettier, Commitizen, Husky 规范代码
前言Eslint, 一个根据方案识别并报告 ECMAScript/JavaScript 代码问题的工具,其目的是使代码风格更加一致并避免错误。
Prettier, code formatting tool 风格格式化工具。
husky,一个为 git 客户端增加 hook 的工具。比如 pre-commit 钩子就会在你执行 git commit 的触发。我们可以在 pre-commit 中实现一些比如 lint 检查、单元测试、代码美化等操作。
lint-staged,一个仅仅过滤出 Git 代码暂存区文件(被 git add 的文件)的工具;这个很实用,因为我们如果对整个项目的代码做一个检查,可能耗时很长,如果是老项目,要对之前的代码做一个代码规范检查并修改的话,这可能就麻烦了,可能导致项目改动很大。所以这个 lint-staged,对团队项目和开源项目来说,是一个很好的工具,它是对个人要提交的代码的一个规范和约束。
Commitizen , 提示和格式化 git commit 日志规范的工具,辅助生成标准规范化的 commitMsg,支持多种提交规范,可以安装和配置不同的适配器实 ...
谈谈二进制——位运算及其应用
0. 概要前两篇文章我们了解了二进制的基本原理(谈谈二进制(一))以及二进制的四则运算(谈谈二进制(二)),本篇我们一起来看看二进制的位运算。
先来看一下有哪些位运算:
上表中列出了我们编程语言中的所有位运算符以及它们对应的规则。在前面的文章中我们讲过,二进制的1和0对应了电子元器件中的高低电平,或是开和关,而实际上,1和0也可以代表逻辑中的真与假。因此,上表中的前三个运算符其实也是逻辑运算符,而它们在逻辑运算中的规则,和二进制位运算基本一致,我们会在文中提及时做一些说明。
1. 位运算所谓位运算,指的是直接对二进制的位进行的运算,它只针对二进制的每一个位,所以它与前面我们讲的四则运算的最根本的区别是:位运算没有进位。
注意了,本篇文章所谈的位运算,都是针对二进制的运算,虽然我们可以将这些运算符直接作用在十进制数上(代码中),但它背后的计算过程却是针对该数对应的二进制数的。
我们一个一个来看。
1.1 与与运算,运算符号是&。首先,与运算是一个二元运算,什么意思呢?就是像我们的加减乘除四则运算一样,与运算也需要两个数进行运算,然后生成第三个数,譬如:A & B = C ...
谈谈二进制-原码、补码、反码、移码
0. 概要老规矩,先回顾一下前面三篇文章我们都讲了什么。
首先,第一篇【谈谈二进制(一)】我们从进制本身的意义开始,认识了二进制和其他进制,然后完成了十进制和其他各种进制之间的转换。
接着,第二篇【谈谈二进制(二)——四则运算】中,我们则通过十进制的四则运算原理,推导出二进制的四则运算。
上一篇【谈谈二进制(三)——位运算及其应用】,我们将二进制从纯数学的世界中带到了计算机的世界里,并通过一个真实的算法题,了解了二进制位运算在实际编程中的使用。
今天这篇,我们来看看二进制在计算机中的特殊表示。
1. 有符号数和无符号数在讲各种码之前,先来熟悉一下两个概念:有符号数和无符号数。这两个概念很好理解,就是字面的意思,一个数值是否有正负符号。
在上一篇文章中,按位取反的部分,我们在C++代码中用unsigned关键字定义了一个无符号数。无符号数的意思就是,这个数字存储在计算机中的时候是没有符号的,也就是正数;而有符号数则会把正负号也存入计算机中。但我们知道,计算机所有的数值都是由二进制组成的,那么正负号这种东西该怎么存储呢?
其实正和负这两个东西,就像布尔型的真和假一样,是两种截然相反的状态, ...
go格式化输出
下面实例使用到的结构体
12345type Website struct { Name string}// 定义结构体变量var site = Website{Name:"duoke360"}
占位符普通占位符
123456占位符 说明 举例 输出%v 相应值的默认格式。 Printf("%v", site),Printf("%+v", site) {duoke360},{Name:duoke360} 在打印结构体时,“加号”标记(%+v)会添加字段名%#v 相应值的Go语法表示 Printf("#v", site) main.Website{Name:"duoke360"}%T 相应值的类型的Go语法表示 Printf("%T", site) main.We ...
go运算符
Go 语言内置的运算符有:
算术运算符
关系运算符
逻辑运算符
位运算符
赋值运算符
算术运算符
运算符
描述
+
相加
-
相减
*
相乘
/
相除
%
求余
注意: ++(自增)和--(自减)在Go语言中是单独的语句,并不是运算符。
实例
12345678910111213141516171819package mainimport "fmt"func main() { a := 100 b := 10 fmt.Printf("(a + b): %v\n", (a + b)) fmt.Printf("(a - b): %v\n", (a - b)) fmt.Printf("(a * b): %v\n", (a * b)) fmt.Printf("(a / b): %v\n", (a / b)) fmt.Printf("(a %% b): %v\n", (a % b)) a++ fmt.Printf("a: %v ...
go字符串类型
一个Go语言字符串是一个任意字节的常量序列。[] byte
go语言字符串字面量在Go语言中,字符串字面量使用双引号 "" 或者反引号 ' 来创建。双引号用来创建可解析的字符串,支持转义,但不能用来引用多行;反引号用来创建原生的字符串字面量,可能由多行组成,但不支持转义,并且可以包含除了反引号外其他所有字符。双引号创建可解析的字符串应用最广泛,反引号用来创建原生的字符串则多用于书写多行消息,HTML以及正则表达式。
实例
123456789101112131415package mainimport "fmt"func main() { var str1 string = "hello world" var html string = <html> <head><title>hello golang</title> </html> ` fmt.Printf("str1: %v\n", str1) fmt.Printf(& ...
go数字类型
Go 语言支持整型和浮点型数字,并且原生支持复数,其中位的运算采用补码。
Go 也有基于架构的类型,例如:int、uint 和 uintptr。
这些类型的长度都是根据运行程序所在的操作系统类型所决定的:
int 和 uint 在 32 位操作系统上,它们均使用 32 位(4 个字节),在 64 位操作系统上,它们均使用 64 位(8 个字节)。
uintptr 的长度被设定为足够存放一个指针即可。
Go 语言中没有 float 类型。(Go语言中只有 float32 和 float64)没有double类型。
与操作系统架构无关的类型都有固定的大小,并在类型的名称中就可以看出来:
整数:
int8(-128 -> 127)
int16(-32768 -> 32767)
int32(-2,147,483,648 -> 2,147,483,647)
int64(-9,223,372,036,854,775,808 -> 9,223,372,036,854,775,807)
无符号整数:
uint8(0 -> 255)
uint16(0 -> ...
go变量
变量是计算机语言中能储存计算结果或能表示值的抽象概念。不同的变量保存的数据类型可能会不一样。
声明变量Go语言中的变量需要声明后才能使用,同一作用域内不支持重复声明。 并且Go语言的变量声明后必须使用。
声明变量的语法
1var identifier type
var:声明变量关键字
identifier:变量名称
type:变量类型
例如
123456789package mainimport "fmt"func main() { var name string var age int var ok bool}
批量声明使用一个var关键字,把一些变量写在一个括号()里
12345678package mainfunc main() { var ( name string age int ok bool )}
变量的初始化Go语言在声明变量的时候,会自动对变量对应的内存区域进行初始化操作。每个变量会被初始化成其类型的默认值,例如: 整型和浮点型变量的默认值为0。 字符串变量的默认值为空字符串“”。 布尔型变 ...
go布尔类型
go语言中的布尔类型有两个常量值:true和false。布尔类型经常用在条件判断语句,或者循环语句。也可以用在逻辑表达式中。
布尔类型1234567891011121314151617181920package mainimport "fmt"func main() { var b1 bool = true var b2 bool = false var b3 = true var b4 = false b5 := true b6 := false fmt.Printf("b1: %v\n", b1) fmt.Printf("b2: %v\n", b2) fmt.Printf("b3: %v\n", b3) fmt.Printf("b4: %v\n", b4) fmt.Printf("b5: %v\n", b5) fmt.Printf("b6: %v\n", b6)}
运行结果
123456b1: trueb2: falseb ...
go语言常用命令
查看可用命令直接在终端中输入 go help 即可显示所有的 go 命令以及相应命令功能简介,主要有下面这些:
build: 编译包和依赖
clean: 移除对象文件
doc: 显示包或者符号的文档
env: 打印go的环境信息
bug: 启动错误报告
fix: 运行go tool fix
fmt: 运行gofmt进行格式化
generate: 从processing source生成go文件
get: 下载并安装包和依赖
install: 编译并安装包和依赖
list: 列出包
run: 编译并运行go程序
test: 运行测试
tool: 运行go提供的工具
version: 显示go的版本
vet: 运行go tool vet
参考文档1https://golang.org/doc/cmd