mover

go-接口

房东的猫 提交于 2020-03-09 21:57:43
接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节。 接口 接口类型 在Go语言中接口(interface)是一种类型,一种抽象的类型。 interface 是一组 method 的集合,是 duck-type programming (鸭子类型编程)的一种体现。接口做的事情就像是定义一个协议(规则),只要一台机器有洗衣服和甩干的功能,我就称它为洗衣机。不关心属性(数据),只关心行为(方法)。 为什么要使用接口 type Cat struct{} func (c Cat) Say() string { return "喵喵喵" } type Dog struct{} func (d Dog) Say() string { return "汪汪汪" } func main() { c := Cat{} fmt.Println("猫:", c.Say()) d := Dog{} fmt.Println("狗:", d.Say()) } 上面的代码中定义了猫和狗,然后它们都会叫,你会发现main函数中明显有重复的代码,如果我们后续再加上猪、青蛙等动物的话,我们的代码还会一直重复下去。那我们能不能把它们当成“能叫的动物”来处理呢? 像类似的例子在我们编程过程中会经常遇到: 比如一个网上商城可能使用支付宝、微信、银联等方式去在线支付

11.Go语言基础之接口

…衆ロ難τιáo~ 提交于 2020-02-06 16:46:31
接口定义了一个对象的行为规范,接口只定义规范不实现,由具体的对象来实现规范的细节。 1.1接口类型 在Go语言中,接口(interface)是一种类型,一种抽象的类型。 interface是一组method的集合,是duck-type programming的一种体现。 接口做的事情就像是定义一个协议(规则),只要一台机器有洗衣服和甩干的功能,就是洗衣机。不关心属性(数据),只关心行为(方法)。 在Java中,也是有接口的概念的。 1.2为什么要使用接口 package main import "fmt" type Cat struct {} func (c Cat) say() string { return "喵喵喵" } type Dog struct {} func (d Dog) say() string { return "汪汪汪" } func main() { var c Cat fmt.Println("猫:",c.say()) var d Dog fmt.Println("狗:",d.say()) } 结果: 猫: 喵喵喵 狗: 汪汪汪 Process finished with exit code 0 上面的代码中定义了猫和狗,都会叫,你会发现main函数中有明显的代码重复,如果动物越多,那么say()函数会越多,那怎样优化呢? 可以使用接口! 1

【创意编程作业】《代码本色》第2章——力

非 Y 不嫁゛ 提交于 2020-01-14 18:03:23
目录 Part1 实现效果以及扩展 Part2 力 Part3 设计思路 Part4 代码实现 Part1 实现效果以及扩展 水平方向给一个向左或向右的(风)力,垂直方向给一个重力或反重力,力的方向随帧数而改变。灰色小球为阻力小球,该区域内阻力系数不同。 操作说明: 1、点击鼠标重置。 2、移动鼠标来移动阻力球。 3、滚动滑轮来缩放阻力球大小。 Part2 力 力是一个向量。力的书面化概念源自牛顿运动定律。 牛顿三大运动定律: 1、物体有保持静止或运动的趋势。 2、力等于质量乘以加速度,F=M*A。 3、每个作用力都有一个大小相等、方向相反的作用力。 其中第二条定律编程时最为重要,在处理像素时,常常令所有对象的质量等于1。于是根据公式有A=F,即物体的加速度等于力。 因为加速度控制速度,速度控制位置,于是力就是物体运动的起因。 而当考虑质量时,加速度=力/质量。 程序常用的外力有:风力、摩擦力、空气和流体阻力、引力等。 《代码本色》参考案例: 1、制造两个外力:风力和重力。指向不同的方向,大小不相等,同时作用在对象上。 2、流体阻力 物体通过流体或者气体时同样会受摩擦力的作用。流体阻力产生的效果和摩擦力相同(物体会减速),计算阻力公式如下: 简化公式,以便于Processing模拟: 设置一块流体区域,该区域内阻力系数与区域外不同,当物体进入区域时,会产生与速度方向相反的阻力。

互动编程习作——表现随机行为及牛顿运动学

只愿长相守 提交于 2019-12-17 23:05:10
互动编程习作——表现随机行为及牛顿运动学 主题:创作一组编程习作,体现随机行为及牛顿力学; 要求:编程语言与工具:编程工具不限; 作品:参考《代码本色》的第0~4章内容及其实例程序(自行在processing内下载),针对这5章分别编写1个习作(一共5个),每个习作都有不少于2个案例参考,且必须有一定的拓展。 第0章 引言 这一章我根据柏林噪声制作了移动的云层,如下图: 代码如下:(在代码本色原本2D柏林噪声的基础上再加上了一个参数,变成3D柏林噪声) float increment = 0.02 ; float t = 0 ; void setup ( ) { size ( 640 , 360 ) ; } void draw ( ) { background ( 0 ) ; t ++ ; loadPixels ( ) ; for ( int x = 0 ; x < width ; x ++ ) { for ( int y = 0 ; y < height ; y ++ ) { float bright = noise ( x * 0.02 , y * 0.02 , t * 0.02 ) * 255 ; pixels [ x + y * width ] = color ( bright ) ; } } updatePixels ( ) ; } 第1章 向量

Go语言基础之接口

放肆的年华 提交于 2019-12-02 06:50:32
Go语言基础之接口 接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节。 接口 接口类型 在Go语言中接口(interface)是一种类型,一种抽象的类型。 interface 是一组 method 的集合,是 duck-type programming 的一种体现。接口做的事情就像是定义一个协议(规则),只要一台机器有洗衣服和甩干的功能,我就称它为洗衣机。不关心属性(数据),只关心行为(方法)。 为了保护你的Go语言职业生涯,请牢记接口(interface)是一种类型。 为什么要使用接口 type Cat struct{} func (c Cat) Say() string { return "喵喵喵" } type Dog struct{} func (d Dog) Say() string { return "汪汪汪" } func main() { c := Cat{} fmt.Println("猫:", c.Say()) d := Dog{} fmt.Println("狗:", d.Say()) } 上面的代码中定义了猫和狗,然后它们都会叫,你会发现main函数中明显有重复的代码,如果我们后续再加上猪、青蛙等动物的话,我们的代码还会一直重复下去。那我们能不能把它们当成“能叫的动物”来处理呢?

golang 基础(二)

感情迁移 提交于 2019-11-30 02:44:04
接口 接口 -> 是一种 类型!!! 一种抽象的类型 接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节。 接口类型 在Go语言中接口(interface)是一种类型,一种抽象的类型。 interface是一组method的集合,是duck-type programming的一种体现。 接口做的事情就像是定义一个协议(规则),只要一台机器有洗衣服和甩干的功能,我就称它为洗衣机。 不关心属性(数据),只关心行为(方法)。 为了保护你的Go语言职业生涯,请牢记接口(interface)是一种类型。 为什么要使用接口 type Cat struct{} func (c Cat) Say() string { return "喵喵喵" } type Dog struct{} func (d Dog) Say() string { return "汪汪汪" } func main() { c := Cat{} fmt.Println("猫:", c.Say()) d := Dog{} fmt.Println("狗:", d.Say()) } 上面的代码中定义了猫和狗,然后它们都会叫,你会发现main函数中明显有重复的代码,如果我们后续再加上猪、青蛙等动物的话,我们的代 码还会一直重复下去。那我们能不能把它们当成“能叫的动物”来处理呢?

go语言碎片整理之接口

廉价感情. 提交于 2019-11-25 23:22:15
接口 接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节。 接口类型 在Go语言中接口(interface)是一种类型,是一种抽象的类型。 interface是一组method的集合,是duck-type programming的一种体现。接口做的事情就像是定义一个协议(规则),只要一台机器有洗衣服和甩干的功能,我就称它为洗衣机。不关心属性(数据),只关心行为(方法)。 为了保护你的Go语言职业生涯,请牢记接口(interface)是一种类型。 为什么要使用接口 package main import ( "fmt" ) type Cat struct{} func (c Cat)Say() string{ return "喵喵喵" } type Dog struct{} func (d Dog)Say() string{ return "汪汪汪" } func main(){ c := Cat{} fmt.Println("猫:",c.Say()) d := Dog{} fmt.Println("狗:",d.Say()) } 上面的代码中定义了猫和狗,然后它们都会叫,你会发现main函数中明显有重复的代码,如果我们后续再加上猪、青蛙等动物的话,我们的代码还会一直重复下去。那我们能不能把它们当成“能叫的动物”来处理呢?