自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(108)
  • 资源 (3)
  • 收藏
  • 关注

原创 go实现家庭收支记账软件项目——面向对象

一思路把记账软件的功能,封装到一个结构体中,然后调用该结构体的方法,来实现记账,显示明细。结构体的名字为 FamilyAccount。再通过在 main 方法中,创建一个结构体 FamilyAccount 实例,实现记账即可.二代码familiAccount.gopackage utilsimport ( "fmt")type FamilyAccount struct { // 声明必须的字段. // 声明一个字段,保存接收用户输入的选项 key ..

2021-04-30 17:27:07 248 1

原创 go断言类型实战

一实战11需求给 Phone 结构体增加一个特有的方法 call(), 当 Usb 接口接收的是 Phone 变量时,需要调用 call方法。2代码package mainimport ( "fmt")// 声明/定义一个接口type Usb interface { // 声明了两个没有实现的方法 Start() Stop()}type Phone struct { name string}// 让 Phone 实现 Usb接口的...

2021-04-28 18:07:36 124

原创 go类型断言基本使用

一问题引出如何将一个接口变量,赋给自定义类型的变量?二 基本介绍类型断言,由于接口是一般类型,不知道具体类型,如果要转成具体类型,就需要使用类型断言。1代码package mainimport ( "fmt")type Point struct { x int y int}func main() { var a interface{} var point Point = Point{1, 2} a = point // oK..

2021-04-27 17:50:57 265

原创 go面向对象编程-多态

一 基本介绍变量(实例)具有多种形态。面向对象的第三大特征,在 Go 语言,多态特征是通过接口实现的。可以按照统一的接口来调用不同的实现。这时接口变量就呈现不同的形态。二 接口体现多态的两种形式1 多态参数Usb 接口既可以接收手机变量,又可以接收相机变量,体现了 Usb 接口多态。2 多态数组a需求在 Usb 数组中,存放 Phone 结构体 和 Camera 结构体变量。b代码package mainimport ( "fmt")// 声明/定义..

2021-04-27 17:49:13 156

原创 go的接口 vs 继承

一实战1需求2代码package mainimport ( "fmt")// Monkey 结构体type Monkey struct { Name string}// 声明鸟接口type BirdAble interface { Flying()}// 声明鱼接口type FishAble interface { Swimming()}func (this *Monkey) climbing() { fmt.Printl...

2021-04-26 17:39:24 236

原创 go接口编程的最佳实践

一需求实现对 Hero 结构体切片的排序。二思路使用 sort.Sort(data Interface)函数进行排序,用到了Interface接口,需要实现 Interface接口的三个方法。三代码package mainimport ( "fmt" "math/rand" "sort")// 1 声明 Hero 结构体type Hero struct { Name string Age int}// 2 声明一个 He...

2021-04-25 20:13:30 208

原创 Golang 接口深入讨论

一点睛1 Golang 接口中不能有任何变量。2 一个接口(比如 A 接口)可以继承多个别的接口(比如 B、C 接口),这时如果要实现 A 接口,也必须将 B、C 接口的方法也全部实现。3 interface 类型默认是一个指针(引用类型),如果没有对 interface 初始化就使用,那么会输出 nil。4 空接口 interface{} 没有任何方法,所以所有类型都实现了空接口, 即可以把任何一个变量赋给空接口。二代码package mainimport ( "f..

2021-04-24 15:36:04 836

原创 go接口的注意事项和细节

一点睛1 接口本身不能创建实例,但是可以指向一个实现了该接口的自定义类型的变量(实例)。2 接口中所有的方法都没有方法体,即都是没有实现的方法。3 在 Golang 中,一个自定义类型需要将某个接口的所有方法都实现,才说这个自定义类型实现了该接口。4 一个自定义类型只有实现了某个接口,才能将该自定义类型的实例(变量)赋给接口类型。5 只要是自定义数据类型,就可以实现接口,不仅仅是结构体类型。6 一个自定义类型可以实现多个接口。二代码package mainimpor..

2021-04-24 15:34:40 136

原创 go接口实战

一实战11代码package mainimport "fmt"type AInterface interface { Test01() Test02()}type BInterface interface { Test01() Test03()}type Stu struct {}func (Stu Stu) Test01() {}func (Stu Stu) Test02() {}func (Stu Stu) Test03() {}..

2021-04-24 15:33:01 140

原创 go接口基本概念

一 接口概念interface 类型可以定义一组方法,但是这些不需要实现。并且 interface 不能包含任何变量。到某个自定义类型(比如结构体 Phone)要使用的时候,再根据具体情况把这些方法写出来(实现)。二 基本语法1 接口里的所有方法都没有方法体,即接口的方法都是没有实现的方法。接口体现了程序设计的多态和高内聚低偶合的思想。2 Golang 中的接口,不需要显式的实现。只要一个变量,含有接口类型中的所有方法,那么这个变量就实现这个接口。因此,Golang 中 没有 imple

2021-04-24 15:26:39 251

原创 go的接口基本使用

一 接口的引入usb 插槽就是现实中的接口。可以把手机、相机、u盘都插在 usb 插槽上,而不同担心哪个插槽是专门插哪个的,原因是做 usb 插槽的厂家和各种设备的厂家都遵守了统一的规定,包括尺寸,排线等等。二 接口的快速入门1要求用代码实现上面的 usb 插槽场景。2代码package mainimport ( "fmt")// 声明/定义一个接口type Usb interface { // 声明了两个没有实现的方法 Start() ..

2021-04-24 15:24:50 553

原创 go面向对象编程-多重继承

一点睛如果一个 struct嵌套了多个匿名结构体,那么该结构体可以直接访问嵌套的匿名结构体的字段和方法,从而实现了多重继承。二代码package mainimport ( "fmt")type Goods struct { Name string Price float64}type Brand struct { Name string Address string}type TV struct { Goods B...

2021-04-24 15:22:54 415

原创 go中继承深入讨论

一点睛1 结构体嵌入两个(或多个)匿名结构体,如果两个匿名结构体有相同的字段和方法(同时结构体本身没有同名的字段和方法),在访问时,就必须明确指定匿名结构体名字,否则编译报错。2 如果一个 struct 嵌套了一个有名结构体,这种模式就是组合,如果是组合关系,那么在访问组合的结构体的字段或方法时,必须带上结构体的名字。3 嵌套匿名结构体后,也可以在创建结构体变量(实例)时,直接指定各个匿名结构体字段的值。4如果一个结构体有 int 类型的匿名字段,就不能有第二个,如果需要有多个 int ..

2021-04-24 15:21:37 103

原创 go中继承细节讨论

一 点睛1 结构体可以使用嵌套匿名结构体所有的字段和方法,即:首字母大写或者小写的字段、方法,都可以使用。2 匿名结构体字段访问可以简化。3 当结构体和匿名结构体有相同的字段或者方法时,编译器采用就近访问原则访问,如希望访问匿名结构体的字段和方法,可以通过匿名结构体名来区分。二 实战package mainimport ( "fmt")type A struct { Name string age int}// 大写func (a *A) SayO

2021-04-24 15:20:10 125

原创 go中继承基本使用

一继承的引出学生考试系统引出代码复用问题。1 代码package mainimport ( "fmt")// 编写一个学生考试系统// 小学生type Pupil struct { Name string Age int Score int}// 显示他的成绩func (p *Pupil) ShowInfo() { fmt.Printf("学生名=%v 年龄=%v 成绩=%v\n", p.Name, p.Age, p.Score)}.

2021-04-22 18:43:43 269 2

原创 go中封装实战

一需求1编写程序,在 model 包中定义 Account 结构体,在 main 函数中体会 Golang 的封装性。2 Account 结构体要求具有字段:账号(长度在 6-10 之间)、余额(长度>20)、密码(长度=6)。3 在 main 函数中测试。二 代码model/account.gopackage modelimport ( "fmt")// 定义一个结构体 accounttype account struct { accountNo..

2021-04-22 17:55:04 149

原创 go中封装基本使用

一 基本介绍Golang 仍然有面向对象编程的继承、封装和多态的特性,只是实现的方式和其它 OOP 语言不一样。二 封装介绍封装(encapsulation)就是把抽象出的字段和对字段的操作封装在一起,数据被保护在内部,程序的其它包只有通过被授权的操作(方法),才能对字段进行操作。三 封装的理解和好处1 隐藏实现细节。2 可以对数据进行验证,保证安全合理(例如 Age不能超过200岁)。四 如何体现封装1 对结构体中的属性进行封装。2 通过方法、包实现封装。五 封..

2021-04-22 17:52:50 511

原创 面向对象编程思想-抽象

一 抽象的介绍我们在定义一个结构体时,实际上就是把一类事物的共有的属性(字段)和行为( 方法)提取出来,形成一个 物理模型(结构体)。这种研究问题的方法称为抽象。二代码package mainimport ( "fmt")// 定义一个结构体 Accounttype Account struct { AccountNo string Pwd string Balance float64}// 方法// 存款func (acco.

2021-04-22 17:48:57 249

原创 go中工厂模式

一点睛Golang 的结构体没有构造函数,通常可以使用工厂模式来解决这个问题。二问题引出一个结构体的声明是这样的。package modeltype Student struct { Name string}这里的 Student 的首字母 S 是大写的,如果想在其它包创建 Student 的实例(比如 main 包),引入 model 包后,就可以直接创建 Student 结构体的变量(实例)。但是问题来了,如果首字母是小写的,如是type student ...

2021-04-22 17:47:05 187

原创 go创建结构体变量时指定字段值

一点睛1 Golang 在创建结构体实例(变量)时,可以直接指定字段的值。2 有两种使用方式。方式 1:在创建结构体变量时,返回结构体本身。方式 2:在创建结构体变量时,返回结构体的指针类型。二代码package mainimport ( "fmt")type Stu struct { Name string Age int}func main() { // 方式1:在创建结构体变量时,就直接指定字段的值 var stu1 =..

2021-04-22 17:45:00 689

原创 go面向对象编程实战

一 步骤1 声明(定义)结构体,确定结构体名2 编写结构体的字段3 编写结构体的方法二需求1 学生案例a 编写一个 Student 结构体,包含 name、gender、age、id、score 字段,分别为 string、string、int、int、float64 类型。b 结构体中声明一个 say 方法,返回 string 类型,方法返回信息中包含所有字段值。c 在 main 方法中,创建 Student 结构体实例(变量),并访问 say 方法,并将调用结果打印输出.

2021-04-22 17:43:10 133

原创 go的方法和函数区别

一点睛1 调用方式不一样函数的调用方式函数名(实参列表)方法的调用方式变量.方法名(实参列表)2 对于普通函数,接收者为值类型时,不能将指针类型的数据直接传递,接收者为指针类型时,不能将值类型的数据直接传递。3 对于方法,接收者为值类型时,可以用指针类型的变量调用方法,接收者为指针类型时,可以用值类型的变量调用方法。二代码package mainimport ( "fmt")type Person struct { Name strin..

2021-04-22 17:41:15 223

原创 go结构体方法实战

一需求1 编写结构体(MethodUtils),编写一个方法,方法不需要参数,在方法中打印一个 10*8 的矩形,在 main 方法中调用该方法。2 编写一个方法,提供 m 和 n 两个参数,方法中打印一个 m * n 的矩形。3 编写一个方法,算该矩形的面积(可以接收长 len,和宽 width),将其作为方法返回值。在 main方法中调用该方法,接收返回的面积值并打印。4 编写方法,判断一个数是奇数还是偶数。5 根据行、列、字符打印对应行数和列数的字符。比如:行为3,列为2,字符*.

2021-04-21 19:11:18 275

原创 go方法的声明和方法的使用细节

一 方法的声明1语法func (recevier type) methodName(参数列表) (返回值列表){ 方法体 return 返回值}2说明a 参数列表:表示方法的输入。b recevier type: 表示这个方法和 type 这个类型进行绑定,或者说该方法作用于 type 类型。c receiver type: type 可以是结构体,也可以其它的自定义类型。d receiver: 就是 type 类型的一个变量(实例)。比如:Per...

2021-04-20 18:08:03 319 1

原创 go中方法的调用和传参机制

一点睛方法的调用和传参机制和函数基本一样,不一样的地方是方法调用时,会将调用方法的变量,当做实参也传递给方法。二机制剖析1代码package mainimport "fmt"type Person struct { Name string}// 给 Person 结构体添加 getSum 方法,可以计算两个数的和,并返回结果。func (p Person) getSum(n1 int, n2 int) int { return n1 + n2}fun...

2021-04-20 18:04:30 462

原创 go中结构体的方法的基本使用

一 基本介绍在某些情况下,我们要需要声明(定义)方法。比如 Person 结构体,除了有一些字段外( 年龄,姓名),Person 结构体还有一些行为。比如:可以说话、跑步......通过学习,还可以做算术题。这时就要用方法才能完成。Golang 中方法作用在指定的数据类型上,和指定的数据类型绑定,因此自定义类型都可以有方法,而不仅仅是 struct。二 方法的声明和调用1语法type A struct { Num int}func (a A) test() { f.

2021-04-20 18:02:04 1058

原创 go 结构体使用注意事项和细节

一 结构体的所有字段在内存中是连续的1代码package mainimport "fmt"// 结构体type Point struct { x int y int}// 结构体type Rect struct { leftUp, rightDown Point}// 结构体type Rect2 struct { leftUp, rightDown *Point}func main() { r1 := Rect{Point{1, 2}.

2021-04-20 17:58:41 313

原创 go的结构体变量和结构体字段

一 创建结构体变量和访问结构体字段1定义a 方式1:直接声明var person Personb方式2:结构体类型{}var person Person = Person{}c 方式3:new (结构体类型)var person *Person = new (Person)d 方式4:&结构体类型{}var person *Person = &Person{}2 说明a 第 3 种和第 4 种方式返回的是结构体指针。b 结构体.

2021-04-20 17:54:26 1388

原创 go中结构体和结构体变量

一 结构体和结构体变量的区别和联系1 结构体是自定义的数据类型,代表一类事物。2 结构体变量(实例)是具体的,实际的,代表一个具体变量。二 结构体变量在内存的布局三 如何声明结构体1 基本语法type 结构体名称 struct {field1 typefield2 type}2 举例type Student struct { Name string // 字段 Age int // 字段 Score float32...

2021-04-20 17:50:08 1728 1

原创 马踏棋盘算法实现

一游戏介绍马踏棋盘算法也被称为骑士周游问题。将马随机放在国际象棋的8×8棋盘Board[0~7][0~7]的某个方格中,马按走棋规则(马走日字)进行移动。要求每个方格只进入一次,走遍棋盘上全部64个方格。游戏演示:https://u.ali213.net/detail/403.html二算法介绍1 马踏棋盘问题(骑士周游问题)实际上是图的深度优先搜索(DFS)的应用。2 如果使用回溯(就是深度优先搜索)来解决,假如马儿踏了53个点,发现已经走到尽头,没办法,那就只能回退了,...

2021-04-19 20:39:13 422

原创 go中结构体基本概念

一问题引出张老太养了两只猫猫:一只名字叫小白,今年3岁,白色。还有一只叫小花,今年100岁,花色。请编写一个程序,当用户输入小猫的名字时,就显示该猫的名字,年龄,颜色。如果用户输入的小猫名错误,则显示张老太没有这只猫猫。二 使用现有技术解决1 单独的定义变量解决2 使用数组解决3代码// 1 使用变量的处理var cat1Name string = "小白"var cat1Age int = 3var cat1Color string = "白色"var cat2Nam..

2021-04-19 19:52:25 302

原创 go中map实战

一需求1 使用 map[string]map[string]sting 的 map 类型。2 key:表示用户名,是唯一的,不可以重复。3 如果某个用户名存在,就将其密码修改"888888",如果不存在就增加这个用户信息,(包括昵称nickname 和 密码 pwd )。4 编写一个函数 modifyUser(users map[string]map[string]sting, name string), 完成上述功能。二代码package mainimport ( ...

2021-04-19 19:49:52 873

原创 go 中 map 使用细节

一点睛1 map 是引用类型,遵守引用类型传递的机制,在一个函数接收 map,修改后,会直接修改原来的 map。2 map 的容量达到后,给 map 增加元素,会自动扩容,并不会发生 panic,也就是说 map 能动态的增长键值对(key-value)。3 map 的 value 也经常使用 struct类型,更适合管理复杂的数据。二代码package mainimport ( "fmt")func modify(map1 map[int]int) { ...

2021-04-18 16:54:53 467

原创 go 中 map 排序

一点睛1 golang 中没有一个专门的方法针对 map 的 key 进行排序。2 golang 中的 map 默认是无序的,注意也不是按照添加的顺序存放的,每次遍历,得到的输出可能不一样。3 golang 中 map 的排序,是先将 key 进行排序,然后根据 key 值遍历输出即可。二代码package mainimport ( "fmt" "sort")func main() { // map的排序 map1 := make(map[int]..

2021-04-18 16:29:40 6031 3

原创 go中map 切片

一点睛切片的数据类型如果是 map,称为 slice of map,map切片,这样使用则 map个数就可以动态变化了。二实战1 要求使用一个 map 来记录 monster 的信息 name 和 age, 也就是说一个 monster 对应一个 map,并且妖怪的个数可以动态的增加。2思路使用 map切片。3 代码package mainimport ( "fmt")func main() { // 演示 map 切片的使用 ...

2021-04-18 16:11:18 1527 1

原创 go 中 map 的增删改查以及遍历

一 map 的增删改查操作1 map 增加和更新map["key"] = value // 如果 key还没有,就增加,如果 key存在就修改。2 map 删除delete(map,"key") // delete 是一个内置函数,如果 key 存在,就删除该 key-value,如果 key 不存在,不操作,但是也不会报错。说明如果要删除 map 的所有 key,没有一个专门的方法一次性删除,可以遍历一下 key, 逐个删除或者 map = make(...)...

2021-04-18 15:59:46 1458

原创 go中map的基本介绍

一点睛map 是 key-value 数据结构,又称为字段数组或者关联数组。二 map 的声明1 基本语法var map 变量名 map[keytype]valuetype2 key的类型golang 中的 map,key 可以是很多种类型。例如bool、数字、string、指针、channel , 还可以是只包含前面几个类型的接口、结构体、数组。通常 key 为 int、string。注意slice、map 和 function 不可以。因为这几个..

2021-04-18 15:38:45 19579

原创 go中二维数组

一 二维数组的应用场景五子棋游戏,迷宫问题都需要用二维数组来表示。二 二维数组快速入门1需求请用二维数组输出如下图形0 0 0 0 0 00 0 1 0 0 00 2 0 3 0 00 0 0 0 0 02 代码package mainimport ( "fmt")func main() { // 二维数组的演示案例 /* 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 3 0 0 .

2021-04-18 09:59:59 1768

原创 go中查找应用

一点睛在 Golang 中,常用的查找有两种。1 顺序查找2 二分查找(该数组必须有序)二顺序查找1需求有一个数列:白眉鹰王、金毛狮王、紫衫龙王、青翼蝠王猜猜游戏:从键盘中任意输入一个名称,判断数列中是否包含此名称2 代码package mainimport ( "fmt")func main() { // 思路 // 1 定义一个数组:白眉鹰王、金毛狮王、紫衫龙王、青翼蝠王。字符串数组 // 2 从控制台接收一个名字,依次比较,...

2021-04-18 09:24:30 428 1

原创 go中排序应用

一 排序的基本介绍排序是将一组数据,依照指定的顺序进行排列的过程。排序的分类:1内部排序将需要处理的所有数据加载到内部存储器进行排序。包括:交换式排序法、选择式排序法和插入式排序法。2外部排序数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。包括:合并排序法和直接合并排序法。3冒泡排序基本思想:通过对排序序列从后向前(从下标较大的元素开始),依次比较相邻的排序码,若发现逆序则交换,使排序码较小的元素逐渐从后部移到前部,就像水底下的气泡一样逐渐向上冒。...

2021-04-18 09:05:11 118

2 shiro身份认证.mp4

身份验证介绍了身份验证基础、principals、credentials、身份认证流程、Realm、多 Realm 配置以及相关实战。

2020-05-19

1 shiro简介.mp4

Apache Shiro 是 Java 的一个安全框架。目前,使用 Apache Shiro 的人越来越多,在此分享给大家!

2020-05-19

Java单选.docx

常见Java单选题,

2019-12-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除