随笔分类 -  Go

go学习
摘要:一、基本介绍 channle本质就是一个数据结构-队列 数据是先进先出 线程安全,多个goroutine访问时,不需要加锁,就是说channel本身就是线程安全的 channel是有类型的,一个string的channel只能存放string类型数据 二、定义/声明channel var 变量名 c 阅读全文
posted @ 2021-06-17 22:02 若雨蚂蚱 阅读(446) 评论(0) 推荐(0)
摘要:一、需求 开启是个协程,计算1-10各个数的阶乘,并且把各个数的阶乘放入到map中,最后显示出来 二、代码实现 package main import ( "fmt" "time" ) var myMap = make(map[int]int, 10) func test(n int) { res 阅读全文
posted @ 2021-06-09 23:04 若雨蚂蚱 阅读(295) 评论(0) 推荐(0)
摘要:一、进程和线程说明 进程就是程序在操作系统中的一次执行过程,是系统进行资源分配和调度的基本单位 线程是进程的一个执行实例,是程序执行的最小单位,他是比进程更小的能独立运行的基本单位 一个进程可以创建和销毁多个线程,同一个进程中的多个线程可以并发执行 一个程序至少有一个进程,一个进程至少有一个线程 二 阅读全文
posted @ 2021-06-09 22:10 若雨蚂蚱 阅读(225) 评论(0) 推荐(0)
摘要:一、第一种 package main import ( "fmt" ) func main() { var a float32 = 3.14 var x interface{} x = a b, ok := x.(float32) if ok { fmt.Printf("类型断言成功,b类型为%T\ 阅读全文
posted @ 2021-06-01 23:12 若雨蚂蚱 阅读(234) 评论(0) 推荐(0)
摘要:一、基本介绍 实例具有多种形态。面向对象的三大特性,在GO语言中,多态的特征通过接口实现的,可以按照统一的接口来调用不同的实现,这时接口变量就是不同的形态. package main import ( "fmt" ) type Usb interface { Start() Stop() } typ 阅读全文
posted @ 2021-06-01 22:18 若雨蚂蚱 阅读(100) 评论(0) 推荐(0)
摘要:1. 接口和继承解决的问题不同 继承的价值主要在于:解决代码的复用性和可维护性 接口的价值主要在于:设计,设计各种规范(方法),让其他自定义类型去实现这些方法 2. 接口比继承更加灵活 接口比继承更加灵活,继承满足is-a的关系,而接口只需要满足like-a的关系 3. 接口在一定程度上实现了代码解 阅读全文
posted @ 2021-06-01 21:46 若雨蚂蚱 阅读(294) 评论(0) 推荐(0)
摘要:一、基本介绍 interfance类型可以定义一组方法,但是这些不需要实现,并且interface不能包含任何变量,到某个自定义类型要使用时,在根据具体情况把这些方法写出来 二、基本语法 type 接口名 interfance{ method1(参数列表)返回值列表 method2(参数列表)返回值 阅读全文
posted @ 2021-05-31 23:19 若雨蚂蚱 阅读(149) 评论(0) 推荐(0)
摘要:封装就是将抽象出来的字段和对字段的操作封装在一起,数据被保护在内部,程序的其他包只有通过授权的操作(方法),才能对字段进行操作。现实中对电视机的操作就是典型的封装。 1. 实现封装的步骤 将结构体、字段(属性)的首字母小写(不能导出,其他包不能使用,类似private) 给结构体所在的包提供一个工厂 阅读全文
posted @ 2021-05-31 22:39 若雨蚂蚱 阅读(135) 评论(0) 推荐(0)
摘要:当多个结构体存在相同的属性(字段)和方法时,可以从这些结构体中抽象出结构体,在该结构体中定义这些相同的属性和方法。其他结构体不需要重新定义这些属性和方法,只需嵌套该结构体的匿名结构体即可。也就是说在Golang中,如果一个struct嵌套了另一个结构体,那么这个结构体可以直接访问匿名结构体的字段和方 阅读全文
posted @ 2021-05-31 22:37 若雨蚂蚱 阅读(106) 评论(0) 推荐(0)
摘要:就是把一类事物的共有属性(字段)和行为(方法)提取出来,形成一个物理模板。这种研究问题的方法称为抽象。 例子: 银行账号都有卡号,密码和余额属性,且可以存款,取款,查询余额这些行为,我们将这些属性和行为提取出来,形成一个模板,用代码实现如下: 项目结构图: account.go package mo 阅读全文
posted @ 2021-05-31 22:14 若雨蚂蚱 阅读(152) 评论(0) 推荐(0)
摘要:一、抽象 就是把一类事物的共有属性(字段)和行为(方法)提取出来,形成一个物理模板。这种研究问题的方法称为抽象。 例子: 银行账号都有卡号,密码和余额属性,且可以存款,取款,查询余额这些行为,我们将这些属性和行为提取出来,形成一个模板,用代码实现如下: 项目结构图: account.go packa 阅读全文
posted @ 2021-05-27 23:01 若雨蚂蚱 阅读(156) 评论(0) 推荐(0)
摘要:一、说明 当结构体名的首字母为小写时,这时这个结构体只能在本包使用,而不能被其他包使用,但是我们在别的包中又希望可以使用这个结构体。由于go语言中没有构造函数,我们可以使用工厂模式来解决这个问题。 二、举例 需求:model包中student结构体首字母为小写,main包中需使用student结构体 阅读全文
posted @ 2021-05-27 21:29 若雨蚂蚱 阅读(222) 评论(0) 推荐(0)
摘要:一、基本说明 结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。 二、结构体声明 type 结构体名称 struct{ field type field type } 例子: type Dog struct { Name string Age int Color string } 注:在创 阅读全文
posted @ 2021-05-24 23:33 若雨蚂蚱 阅读(159) 评论(0) 推荐(0)
摘要:Golang也支持面向对象编程(oop),但是和传统的面向对象有区别,并不是纯粹的面向对象语言,所以我们说Golang支持面向对象编程特性是比较准确的。 Golang没有类(class),Go语言的结构体(struct)和其他编程语言的类(class)有相同的地位,你可以理解Golang是基于str 阅读全文
posted @ 2021-05-24 21:18 若雨蚂蚱 阅读(210) 评论(0) 推荐(0)
摘要:一、基本介绍 map是key-value数据结构,是一种无序的键值对的集合。 二、基本语法 var 变量名 map[keytype]valuetype keytype可以是很多类型,比如bool,数字,string,指针,channel,还可以是包含前面几个类型的接口,结构体,数组,通常为int、s 阅读全文
posted @ 2021-05-19 23:08 若雨蚂蚱 阅读(176) 评论(0) 推荐(0)
摘要:一、基本介绍 切片是数组的一个引用,因此切片是引用类型,在进行传递时,遵守引用类型的机制 切片的使用和数组类似,如遍历切片,访问切片的元素和求切片长度len(slice)都一样。 切片的长度是可以变化的,因此切片是一个可以动态变化的数组 二、切片的定义 var 切片名 []类型 比如: var a 阅读全文
posted @ 2021-05-18 23:15 若雨蚂蚱 阅读(128) 评论(0) 推荐(0)
摘要:一、基本介绍 数组可以存放多个同一类型数据,数组也是一种数据类型,在Go中,数组是值类型。 二、数组的定义 var 数组名 [数组大小] 数据类型 例子: var a [3] int 三、数组的内存布局 package main import ( "fmt" ) func main() { var 阅读全文
posted @ 2021-05-16 11:26 若雨蚂蚱 阅读(159) 评论(0) 推荐(0)
摘要:一、基本说明 Go语言追求简洁优雅,所以,Go语言不支持传统的try...catch...finally这种处理。 Go中引入的处理方式为:defer,panic,recover 这个异常的使用场景可以这么简单的描述:Go中可以抛出一个panic异常,然后在defer中通过recover捕获这个异常 阅读全文
posted @ 2021-05-13 22:55 若雨蚂蚱 阅读(181) 评论(0) 推荐(0)
摘要:一、说明 Golang设计者为了编程方便,提供了一些函数,这些函数可以直接使用,我们称为Go的内置函数。 二、常用函数 1. len() func len(v Type) int 函数len返回 v 的长度 数组:v中元素的数量 数组指针:*v中元素的数量(v为nil时panic) 切片、映射:v中 阅读全文
posted @ 2021-05-13 22:14 若雨蚂蚱 阅读(408) 评论(0) 推荐(0)
摘要:一、常用函数 时间和时期相关函数,需要导入time包。time.Time,用于表示时间 1. 获取当前时间的方法 now := time.Now() // now的类型就是time.Time 2. 如何获取到其他的日期信息 package main import ( "fmt" "time" ) f 阅读全文
posted @ 2021-05-13 21:48 若雨蚂蚱 阅读(174) 评论(0) 推荐(0)