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

浙公网安备 33010602011771号