代码改变世界

随笔档案-2019年09月

45_类型断言之switch的使用

2019-09-22 00:08 by StevenZhao, 392 阅读, 收藏,
摘要: package main import "fmt" type Elementer interface{} type Person struct { name string age int } func main() { var list []Elementer = make([]Elementer, 阅读全文

44_类型转换

2019-09-22 00:05 by StevenZhao, 120 阅读, 收藏,
摘要: /* comma-ok断言: Go语言里面有一个语法,可以直接判断是否是该类型的变量: value, ok = element.(T), 这里value就是变量的值,ok是一个bool类型,element是interface变量, T是断言的类型 */ 阅读全文

43_空接口

2019-09-22 00:02 by StevenZhao, 143 阅读, 收藏,
摘要: 1.空接口(interface{})不包含任何的方法,正因为如此,所有的类型都实现了空接口,因此空接口可以存储任意类型的数值。 2.它有点类似于C语言的void *类型 阅读全文

42_接口之间的转换

2019-09-21 23:59 by StevenZhao, 253 阅读, 收藏,
摘要: //超集可以使用子集里面的方法,而子集不能调用超集里面的方法 //超集接口变量可以转换为子集接口类型,但是子集接口类型不可以转换为超集接口类型 代码如下: 阅读全文

41_接口的嵌入

2019-09-21 23:54 by StevenZhao, 162 阅读, 收藏,
摘要: package main import "fmt" type Hummaner interface { sing() //声明一个方法,并没有实现 } type Studenter interface { Hummaner //匿名字段,嵌入字段 play() //声明一个方法,并没有实现 } ty 阅读全文

40_接口类型的使用

2019-09-21 23:48 by StevenZhao, 209 阅读, 收藏,
摘要: //接口类型是一种抽象类型,他不会暴露所代表的对象的内部直的结构和这个对象支持的基础操作的集合,它们只展示自己的方法.因此接口类型不能将其实例化 //接口类型描述了一些列的方法的集合 //接口类型名通常以"er"结尾 阅读全文

39_方法值和方法表达式

2019-09-21 23:36 by StevenZhao, 154 阅读, 收藏,
摘要: package main import "fmt" type Person struct { //和变量定义不同,不要写var关键字 Id int Name string Sex byte } type Student struct { Person Hobby string } func (s P 阅读全文

38_方法的重写

2019-09-21 23:23 by StevenZhao, 98 阅读, 收藏,
摘要: package main import "fmt" type Person struct { //和变量定义不同,不要写var关键字 Id int Name string Sex byte } type Student struct { Person Hobby string } //改变接收者类型 阅读全文

37_匿名字段方法的继承

2019-09-21 23:20 by StevenZhao, 131 阅读, 收藏,
摘要: package main import "fmt" type Person struct { //和变量定义不同,不要写var关键字 Id int Name string Sex byte } type Student struct { Person Hobby string } func (s P 阅读全文

36_方法集的使用

2019-09-21 23:12 by StevenZhao, 327 阅读, 收藏,
摘要: 所谓方法集,就是go编译器,可以根据 传递的接收者(receiver)类型,自动转换成所需的类型 阅读全文

35_方法的使用

2019-09-21 23:02 by StevenZhao, 149 阅读, 收藏,
摘要: 概述: 在面向对象编程中,一个对象其实也就是一个简单的值或者一个变量,在这个对象中会包含一些函数,这种带有接收者的函数,我们称为方法(method)。 本质上,一个方法则是一个和特殊类型关联的函数。 一个面向对象的程序会用方法来表达其属性和对应的操作,这样使用这个对象的用户就不需要直接去操作对象,而 阅读全文

34_结构体指针类型的使用

2019-09-21 22:53 by StevenZhao, 620 阅读, 收藏,
摘要: package main import "fmt" //定义一个结构体,存储学生信息 //要想被不同的包调用结构体,则结构体的名字首字母要大些,里面的变量名也要大写 type Student struct { //和变量定义不同,不要写var关键字 Id int Name string Sex by 阅读全文

33_同名字段的使用

2019-09-21 22:42 by StevenZhao, 162 阅读, 收藏,
摘要: 在结构体中,如果结构体中含有继承父结构体,如果含有同名的字段,除了指明具体属于哪个结构体的字段外,默认操作:就近原则package main import "fmt" //定义一个结构体,存储学生信息 //要想被不同的包调用结构体,则结构体的名字首字母要大些,里面的变量名也要大写 type Stud 阅读全文

32_匿名字段的使用

2019-09-21 22:35 by StevenZhao, 208 阅读, 收藏,
摘要: 匿名字段相当于c语言里面的继承,即在结构体中继承父结构体,只需要写父结构体的结构体名字,不写结构体的类型 阅读全文

31_结构体的使用

2019-09-08 16:58 by StevenZhao, 244 阅读, 收藏,
摘要: 1.结构体是将零个或多个任意类型的命名变量组合在一起的聚合数据类型,每个变量都叫做结构体成员2.结构体何以作为函数参数传递,其是复制一个结构体将它传给一个函数,是值传递代码如下: packagemain import"fmt" //定义一个结构体,存储学生信息 //要想被不同的包调用结构体,则结构体 阅读全文

30_map的使用

2019-09-08 16:21 by StevenZhao, 203 阅读, 收藏,
摘要: 1.散列表是设计精妙,用途广泛的数据结构之一,他是一个拥有键值对元素的无序集合.在这个集合中,键的值是唯一的, 键对应的值,可以通过键来获取,更新,或移除.2.Go语言中的map(映射、字典)是一种内置的数据结构,它是一个无序的key—value对的集合,比如以身份证号作为 唯一键来标识一个人的信息 阅读全文

29_猜字游戏

2019-09-08 16:05 by StevenZhao, 145 阅读, 收藏,
摘要: /* 整体架构: 1、产生一个四位随机数 2、把产生的四位随机数按位放入切片中 3、把切片传入游戏中与玩家手动输入的数进行比对 */ package main import ( "fmt" "math/rand" "time" ) //随机创建一个随机四位数 func CreatNum(p *int 阅读全文

28_切片做函数参数的使用

2019-09-08 16:01 by StevenZhao, 338 阅读, 收藏,
摘要: 和数组不同,切片做函数参数是引用传递,下面通过一个冒泡排序来具体验一下代码如下:package main import ( "fmt" "math/rand" "time" ) func InitData(s []int) { //产生一个种子 rand.Seed(time.Now().UnixNa 阅读全文

27_copy函数的使用

2019-09-08 15:50 by StevenZhao, 249 阅读, 收藏,
摘要: copy函数是将对应的元素进行覆盖,而不是将原切片内容抹去后在覆盖package main import "fmt" func main() { var s1 []int = []int{1, 2, 3, 4, 5, 6} var s2 []int = []int{8, 9} //copy函数的覆盖 阅读全文

26_append 函数的使用

2019-09-08 14:34 by StevenZhao, 4066 阅读, 收藏,
摘要: append 函数的使用1.内置函数append用来将元素追加到slice的后面2.如果使用append追加时,原底层数组容量够时,还会使用原来的底层数组,并把新的元素复制到原数组的后面, 如果slice的容量不够时,就把原来的数组扩展一倍,并把原来的slice数组复制到新的扩充数组中,然后再 将新 阅读全文

01_动态规划之01背包问题

2019-09-05 14:22 by StevenZhao, 589 阅读, 收藏,
摘要: 动态规划原理: 动态规划与分治法类似,都是把大问题拆分成小问题,通过寻找大问题与小问题的递推关系,解决一个个小问题,最终达到解决原问题的效果。但不同的是,分治法在子问题和子子问题等上被重复计算了很多次,而动态规划则具有记忆性,通过填写表把所有已经解决的子问题答案纪录下来,在新问题里需要用到的子问题可 阅读全文

25_使用切片建立一个动态的二位数组.go

2019-09-05 11:22 by StevenZhao, 285 阅读, 收藏,
摘要: package main import "fmt" 在go语言中,数组都是定长的,定义后就不能改变数组的大小,可以使用切片来实现动态的二位数组建立 func main() { //创建一个n行p列的动态二位数组 var m [][]int var n, p int fmt.Scan(&n, &p) 阅读全文