11 2020 档案

鸭子类型
摘要:1 在golang中,只要对象实现了某个接口i的所有方法,就能赋值给该接口变量,这是golang实现鸭子类型的基础或前提,有了这个前提,当函数的接收参数是接口的时候,无需关系传入的对象是什么类型,只要它实现了该接口的所有方法,就说该对象是满足该函数的输入参数的数据类型,即只要它满足了鸭子的方法,不管 阅读全文

posted @ 2020-11-30 14:38 吃我一枪 阅读(143) 评论(0) 推荐(0)

类型别名和自定义类型
摘要:1 类型别名和原类型本质上是一样的,而自定义类型可以给其添加新的方法, package main import "fmt" //将int定义为自定义类型MyInt1 type MyInt1 int type MyInt2 = int //SayHello 为MyInt1添加一个SayHello的方法 阅读全文

posted @ 2020-11-26 19:22 吃我一枪 阅读(184) 评论(0) 推荐(0)

结构体比较
摘要:1 两个结构体可以比较有两个前提,一是里面的数据类型对应要一样,顺序不同也不能比较,否则无法编译,二是里面的数据类型不能是切片、map、函数 阅读全文

posted @ 2020-11-26 17:25 吃我一枪 阅读(542) 评论(0) 推荐(0)

不定长参数列表用法
摘要:1 一个是传入的参数长度不固定,一个是用于解包,类似python中的** package main import "fmt" // 第一个作用是输入的参数长度可变 func func1(args ...int){ fmt.Println(args) } func main() { func1(1,2 阅读全文

posted @ 2020-11-26 17:08 吃我一枪 阅读(300) 评论(0) 推荐(0)

接口
摘要:1 接口类型作为函数的传入参数时,里面只能调用接口的方法,接口绑定的对象的方法是无法调用的, package main import "fmt" type cat struct { name string } type Ilife interface { cry() } func implement 阅读全文

posted @ 2020-11-23 13:58 吃我一枪 阅读(154) 评论(0) 推荐(0)

字符串数据类型
摘要:1 字符串中的字符默认类型为rune,即int32, package main import ( "fmt" ) func main() { s := "abcdABCD" k1 := []rune(s) // rune是int32类型 fmt.Println(k1) k2 := []byte(s) 阅读全文

posted @ 2020-11-22 17:41 吃我一枪 阅读(293) 评论(0) 推荐(0)

*和**的打包和解包
摘要:1 解包的直接理解就是去掉两个{} # 有时候这个会写到函数后面,return直接返回一个字典,里面用**进行解包, # **的作用就是直接去掉字典外的两个{} a = {1:"大", 2:"小"} b = {3:"高", 4:"矮", **a} print(b) # {3: '高', 4: '矮' 阅读全文

posted @ 2020-11-15 19:38 吃我一枪 阅读(103) 评论(0) 推荐(0)

python类常用装饰器
摘要:1 @property, 类似于Java中的get方法,得到类的一个属性或方法,在Python中,它的作用就是get,set,delete,不同的调用将会触发不同的结果,如果是get,则函数里面是直接return的,如果是set,则函数里面是赋值, 阅读全文

posted @ 2020-11-15 19:34 吃我一枪 阅读(727) 评论(0) 推荐(0)

继承的实现
摘要:1 golang的继承通过结构体的嵌套来实现,即若结构体A包含有结构体B,则结构体B实现的方法A都可以调用,并且还可以结构体地址嵌套, golang的继承是通过结构体内的匿名字段来实现的,即结构体的嵌套,一看到结构体的嵌套说明使用了继承, 阅读全文

posted @ 2020-11-14 16:31 吃我一枪 阅读(67) 评论(0) 推荐(0)

map用法
摘要:1 map有两种初始化的方法 package main import "fmt" func main(){ // 方法一,先声明map,再使用make函数创建一个非nil的map,nil map不能赋值,最后给已声明的map赋值 var m1 map[string]interface{} m1 = 阅读全文

posted @ 2020-11-12 20:14 吃我一枪 阅读(85) 评论(0) 推荐(0)

包的导入和init函数
摘要:1 对于不同的package,如果不相互依赖的话,按照main包中"先import的后调用"的顺序调用其包中的init(),因为这是个栈结构,所以先导入的后调用其init(), 参考:https://www.cnblogs.com/TimLiuDream/p/9929934.html http:// 阅读全文

posted @ 2020-11-12 12:07 吃我一枪 阅读(136) 评论(0) 推荐(0)

协程
摘要:1 协程和进程线程不是一个东西,不是一个层面的东西,进程线程是从操作系统层面的,而协程是程序层面的,它是函数级别的,协程可以看做是异步的,而原先的函数调用是同步的,即只能顺序执行,如果在函数内跳转的话,就要保存当前的信息入栈,而协程是可以直接跳过的,线程内的协程不能并行运行(多核也不行),只能串行, 阅读全文

posted @ 2020-11-11 15:33 吃我一枪 阅读(54) 评论(0) 推荐(0)

匿名字段
摘要:1 匿名字段嵌套入结构体时,可以直接.属性名访问,而如果不是匿名字段的话,不能这样写 type Point struct { X, Y int } type Circle struct { Center Point Radius int } type Wheel struct { Circle Ci 阅读全文

posted @ 2020-11-09 17:33 吃我一枪 阅读(102) 评论(0) 推荐(0)

普通变量和指针变量 值传递和引用传递
摘要:1 方法使用指针变量时,会直接修改调用该方法的对象,而用普通变量则不会 //Person 结构体 type Person struct { name string age int8 } //NewPerson 构造函数 func NewPerson(name string, age int8) *P 阅读全文

posted @ 2020-11-09 14:35 吃我一枪 阅读(278) 评论(0) 推荐(0)

runtime.Caller()
摘要:1 这个函数主要是为了查看函数调用栈的问题, package main import ( "fmt" "runtime" ) func main() { for i := 0 ; i< 4; i++ { test(i) } } func test(skip int) { call(skip) } f 阅读全文

posted @ 2020-11-06 19:47 吃我一枪 阅读(690) 评论(0) 推荐(0)

英语
摘要:重写英语Extension 延长 阅读全文

posted @ 2020-11-05 19:46 吃我一枪 阅读(95) 评论(0) 推荐(0)

git分支管理
摘要:1 git branch -a 查看本地和远程的所有分支 git branch -r 查看远程的分支 git push origin 本地分支名 --force 本地的代码强行覆盖远程代码 先在GitHub上建仓库,再将本地代码同步到远程, 阅读全文

posted @ 2020-11-02 15:59 吃我一枪 阅读(74) 评论(0) 推荐(0)

导航