代码改变世界

随笔档案-2019年08月

为什么突然想起来写博客

2019-08-31 17:56 by StevenZhao, 207 阅读, 收藏,
摘要: 能够写博客的人给人的第一印象就是这个人是大佬,对于我这样的学渣来说大佬是那么的遥远。而且对于从来没写过博客的我来说,突然写博客给人一种做作的感觉。还有一个原因就是写博客会占用很多的自己空闲时间,对于一个相对懒惰的我来都是那么的不现实。在很早以前我就有写博客的想法,最终都是以懒惰打败了天真而告终。但这 阅读全文

24_切片的使用

2019-08-31 17:29 by StevenZhao, 237 阅读, 收藏,
摘要: 实例代码如下: 阅读全文

23_随机数的生成和冒泡排序

2019-08-31 17:21 by StevenZhao, 469 阅读, 收藏,
摘要: //冒泡排序 阅读全文

22_数组做函数参数

2019-08-31 17:18 by StevenZhao, 168 阅读, 收藏,
摘要: 数组的弊端: 1、固定数组大小 2、值传递,赋值整个数组,占用内存 3、b:=[...]int{1,2,3}//不指定数组大小定义数组并初始化 因为数组做函数参数是值传递(c语言中是引用传递),所以使用函数指针作为函数参数比较高效例如: package main import ( "fmt" "math/rand" "time" ) //冒泡排序:切片,引用传递 func Bubble(a []i 阅读全文

21_一维数组和二位数组的使用

2019-08-31 17:13 by StevenZhao, 216 阅读, 收藏,
摘要: 1、数组是具有固定长度且拥有零个或多个相同数据类型元素的序列。因为数组的长度固定,所以go语言里很少使用, slice的长度可以增加或缩短,使用较多2、Go内置len函数。可以返回数组的元素个数3、如果省略号“...”出现在整个数组长度的位置,那么数组的长度有初始化数组的元素个数决定。4、数组的长度 阅读全文

20_指针类型的使用

2019-08-31 16:55 by StevenZhao, 228 阅读, 收藏,
摘要: 1、指针是存储值的地方 2、指针的值是一个变量的地址。一个指针指示值所保存的位置,不是所有的值都有地址,但是所有的变量都有地址。 3、使用指针,可以在无需知道变量名字的情况下,间接读取或更新变量的值 4、如果一个变量声明为 var x int,表达式&x(x的地址)获取一个指向整型变量的指针,他的类 阅读全文

19_获取命令参数

2019-08-31 16:31 by StevenZhao, 144 阅读, 收藏,
摘要: 1、获取命令行参数,即是在命令行编译运行时,输入参数,并得到参数输出例如:package main import "fmt" import "os" func main() { //Args是数组字符串类型 s := os.Args //程序编译之后,在运行时可以接受命令行传递的参数,s是字符串类型 阅读全文

18_init 函数的使用

2019-08-31 16:21 by StevenZhao, 832 阅读, 收藏,
摘要: 1、init()函数是一个内置函数,在程序执行前会先执行init()函数,及在main()函数执行前执行 2、如果调用包里有init()函数,会先执行调用包的init()函数,在这执行本函数的init()函数 3、函数的执行流程如下: 例如: 程序目录:F:\GoWork\go不同级目录\src 阅读全文

17_defer(延迟调用)关键字的使用

2019-08-31 16:12 by StevenZhao, 245 阅读, 收藏,
摘要: 1、defer是延迟调用关键字,只能在函数内部使用 2、总是在main函数结束前调用(和init用法相对) 3、如果有多个defer 遵循先进后出的原则 4、和匿名函数同时使用时,如果匿名函数带有参数,则先把参数传进去,最后调用 例如:package main import "fmt" func Test() { defer fmt.Println("111111") //最后执行 defer f 阅读全文

16_闭包的一些特性

2019-08-31 16:02 by StevenZhao, 168 阅读, 收藏,
摘要: 闭包函数的特性:就相当于引用传递,在闭包函数内改变外部变量,并不释放,而是彻底修改,直到闭包函数不再使用 package main import "fmt" //函数的返回值是一个闭包函数,返回函数类型 func Test01() func() int { var a int //默认值为0 return func() int { a++ return a * a } } //普通函数 func 阅读全文

15_匿名函数和闭包的使用

2019-08-31 15:56 by StevenZhao, 186 阅读, 收藏,
摘要: 1、在go语言中,所有的匿名函数(规范称为:函数字面量)都是闭包函数,匿名函数不需要定义函数名的一种函数 实现形式,它并不是一个新概念,可以追溯到语言 2、闭包:就是一个“函数”捕获了和它在同一个作用域的其他常量。 这就意味着当闭包被调用的时候,不管程序在什么地方调用,闭包都能够使用这些常量或者变量。 它并不关心这些捕获的常量和数量是否已经超越了作用域,所以只要这些闭包还在使用,这些变量就还会存在 阅读全文

14_函数类型和回调函数

2019-08-31 15:50 by StevenZhao, 344 阅读, 收藏,
摘要: 1、定义一个函数类型:函数类型是定义一个函数接口,使具有相同参数、相同返回值的函数共同使用同一个借口 2、 关键字用type定义3、声明一个函数类型,func 后面没有函数名,没有大括号 例如: package main import "fmt" type Ftest func(int, int) int //这个时候就相当于一个数据类型(例如 int) //函数类型还可以作为另一个函数的参数进行 阅读全文

13_函数的基本使用简介

2019-08-31 15:42 by StevenZhao, 159 阅读, 收藏,
摘要: go语言中,函数一些规则:/*函数名规定首字母大写为public,首字母小写为private public允许被其他函数调用 函数的关键字是func 格式为: func FunName(参数列表)(返回值列表){ //函数体 return //返回值 } */ 例如:package main import "fmt" //无参无返回值,返回值列表为空,可以不写 func Print() { fmt 阅读全文

12_goto语句的使用

2019-08-31 15:37 by StevenZhao, 696 阅读, 收藏,
摘要: 1、goto是一个关键字,其作用是运行到goto语句进行跳转,立即执行goto后面所对应标签的语句2、结构:goto 标签名(任意起)3、goto语句尽量不要跨函数使用,否则会使代码看起来非常乱,可读性差例如:package main import "fmt" func main() { for i := 1; i < 19; i++ { fmt.Println("hello Steven %d" 阅读全文

11_for语句的使用

2019-08-31 15:31 by StevenZhao, 137 阅读, 收藏,
摘要: for是一种循环结构go语言中,for语句结构: for 初始语句; 条件语句; 迭代后语句 { 代码体 }例子: package main import "fmt" import "time" func main() { var d int for d = 1; d < 10; d++ { fmt.Println("当前是第%d循环", d) time.Second //沉睡一秒 if d == 阅读全文

10_switch语句的使用

2019-08-31 15:12 by StevenZhao, 252 阅读, 收藏,
摘要: /* switch 语句和c语言的用法不同 1、go语句是默认添加break语句的,但c不是默认的 2、go语句添加一个fallthrough语句,可以顺序执行接下来的结构 3、switch在关键词后面可以添加赋值语句,用分号和后面的变量分开,更加的便捷 */ package main import "fmt" func main() { //a := 11 switch a := 1; a { 阅读全文

09_if条件语句的使用

2019-08-31 15:08 by StevenZhao, 192 阅读, 收藏,
摘要: 1、条件语句是用来判断给定的条件是否满足(表达式值是否为0),并根据判断的结果(真或假)决定执行的语句2、go语言和C语言的条件语句在语法格式上大体相似,但是还是有略微的不同,具体的细节如下例子:package main import "fmt" func main() { var b int //if 条件语句可以在判断位置增加一个赋值语句,也可以不加 //if 判断语句没有括号,这个和C语言不 阅读全文

08_类型别名(类型声明)

2019-08-31 14:59 by StevenZhao, 238 阅读, 收藏,
摘要: 1、type 声明定义一个新的命名类型,它和某个已有类型使用同样的底层类型2、命名类型提供了一种方式来区别底层类型的不同或者不兼容使用,这样他们就不会在无意中混用。例如package main import "fmt" func main() { //type关键字 type bigint int64 var a bigint fmt.Printf("a type is%T\n", a) //批量 阅读全文

07_格式化输入和输出

2019-08-31 14:34 by StevenZhao, 119 阅读, 收藏,
摘要: fmt包中格式化输入输出: 阅读全文

06_复数的使用

2019-08-31 14:20 by StevenZhao, 192 阅读, 收藏,
摘要: 1、go语言中有两种大小的复数 complex64和complex128,二者分别由float32和float64组成。2、内置的complex函数,根据给定的实部和虚部创建复数,而内置的real函数和imag函数则分别提取复数的实部和虚部 package main import "fmt" func main() { var t complex128 t = 2 + 2.1i fmt.Print 阅读全文

05_指针之New()函数的使用

2019-08-31 14:07 by StevenZhao, 1854 阅读, 收藏,
摘要: 1、new函数是一个内置函数,表达式new(T)创建一个未命名的T类型变量, 初始化为T类型的零值,并返回其地址(地址类型为*T)2、p:=new(int),q:=new(int)==>p!=q 因为每次创建返回的地址是不一样的。 而结构体中struct{},或[0]int ,在当前的实现里,他们具 阅读全文

04.3_密钥分存和密钥共享

2019-08-26 21:15 by StevenZhao, 843 阅读, 收藏,
摘要: N<=M)..把密钥放在保险箱或者写在纸上,这样会造成一个问题就是,一毁具毁。为了解决这个问题,密码学有一个“密码分存”技术。 方法:密钥被分为N个片段,我们只需要获取其中的K个片段,就可以把原密钥重新还原。如果获取的片段少于K个,就无法知道关于密钥的任何信息。 密钥不是简单的切分为N个片段,而是将 阅读全文

04.2_热存储和冷存储

2019-08-26 20:50 by StevenZhao, 1473 阅读, 收藏,
摘要: 热存储:把比特币放在电脑里,就像把钱放在钱包里带着。 冷存储:离线,把比特币锁在其他地方。 管理冷存储的的问题:一方面,为了私密性和其他考虑,我们希望用不同的地址来收款。所以我们把比特币从热存储转到冷存储的时候,需要用一个新的冷存储地址。但是由于冷存储不上线,所以热存储必须能找到这样的地址。 一个直 阅读全文

04.1_存储和使用比特币

2019-08-26 20:05 by StevenZhao, 414 阅读, 收藏,
摘要: 一、简单的本地存储 公共信息:记录在区块链上的内容(例如 比特币的识别信息、币值等) 私密信息:即本人的私钥 1、存储和管理私钥的三个目标 可获取性;安全性;便利性(不能做到同时满足,根据具体应用情形,作出权衡) 2、几种管理比特的方法 比特币钱包软件:管理你比特币和私钥信息并方便使用的应用软件 比 阅读全文

04_枚举类型iota

2019-08-23 15:46 by StevenZhao, 177 阅读, 收藏,
摘要: package main 阅读全文

03_多个变量或常量的定义

2019-08-23 15:27 by StevenZhao, 282 阅读, 收藏,
摘要: 综述:1、变量和常量的定义格式有所不同,并且关键字也不一样:变量 var, 常量:const 2、变量的自动推导类型:var a:=10 常量的自动推导类型 const b=10 3、多个变量或者常量定义,且它们类型不一样时,可以用()括起来 具体实现看下面代码: package main //多个 阅读全文

02_变量及变量的多重赋值和匿名变量

2019-08-22 16:18 by StevenZhao, 272 阅读, 收藏,
摘要: package main 阅读全文

01_liteide 集成环境运行的问题

2019-08-22 14:25 by StevenZhao, 323 阅读, 收藏,
摘要: //go语言是以包为管理单位 //每个文件必须先声明包 //程序必须有一个main包 package main import ( "fmt" ) //入口函数 func main() {//左括号必须与函数名同行 //println函数自动换行 //调用函数大部分先导入包 /* 块注释 */ fmt 阅读全文