
Go
文章平均质量分 86
RUNA22
这个作者很懒,什么都没留下…
展开
-
Go---哈希表
哈希表散列表(Hash table,也叫哈希表) ,是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。上机题有一个公司,当有新的员工来报道时,要求将该员工的信息加入Gd.性别,年龄,住址. ).当输入该员工的id时,要求查找到该员工的所有信息要求:1)不使用数据库尽量节省内存,速度越快越好>哈希表(散列)2)添加时,保证按照雇员的id从低到高..原创 2022-02-07 16:03:47 · 524 阅读 · 0 评论 -
Go---递归
递归第归就是函数/方法自己调用自己,每次调用时传入不同的变量.第归有助于编程者解决复杂的问题,同时可以让代码变得简洁。递归需要遵守的重要原则1)执行一个函数时,就创建一个新的受保护的独 立空间(新函数栈)2)函数的局部变量是独立的,不会相互影响,如果希望各个函数栈使用同一个数据,使用引用传递3)递归必须向退出递归的条件逼近,否则就是无限递归,死龟了:)4)当一个函数执行完毕,或者遇到return, 就会返回,遵守谁调用,就将结果返回给谁,同时当函数执行完毕或者返回时,该函数本身也会被系统销毁原创 2022-02-07 14:16:38 · 331 阅读 · 0 评论 -
Go---栈
栈的英文为(stack)栈是一个先入后出(FILO-First ln Last Out)的有序列表。栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。根据堆栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除。出栈和入栈的概念实例package mainimport (原创 2022-02-07 13:10:01 · 739 阅读 · 0 评论 -
Go---排序
排序排序是将一组数据,依指定的顺序进行排列的过程。常见的排序:1)冒泡排序2)选择排序3)插入排序4)快速排序选择排序选择式排序也属于内部排序法,是从排序的数据中,按指定的规则选出某一元素,经过和其他元素重整,再依原则交换位置后达到排序的目的。func SelectSort(arr *[5]int){ //标准的访问方式 //arr[1]=600 //等价于(*arr)[1]=600 //1.先完成第一个最大值和arr[0] 交换...原创 2022-01-28 16:01:05 · 621 阅读 · 0 评论 -
Go---环形链表
完成对单向环形链表的添加结点,册除结点和显示.package mainimport ( "fmt")//定义猫的结构体的结点type CatNode struct { Num int //猫的编号 Name string Next *CatNode //指向下一个结点}//添加结点func InsertCatNode(head *CatNode,newCatNode *CatNode){ //判断是不是添加第一只猫...原创 2022-01-28 14:17:42 · 923 阅读 · 0 评论 -
Go---链表
链表链表是有序的列表,但是它在内存中是存储如下单链表单链表(带头结点) 逻辑结构示意图如下说明: 一般来说,为了比较好的对单链表进行增册改查的操作,我们都会给它设置一个头结点,头结点的作用主要是用来标识链表头,这个节点本身不存放数据。...原创 2022-01-28 10:13:12 · 757 阅读 · 0 评论 -
Go---稀疏数组、队列
数据结构数据结构是一门研究算法的学科,只从有了编程语言也就有了数据结构.学好数据结构可以编写出更加漂亮,更加有效率的代码。程序=数据结构+算法稀疏数组 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理方法是: 1) 记录数组一共有几行几列,有多少个不同的值 2) 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模应用实例1)使用稀疏数组,来保留类似前面的二维数组(棋盘、地图等等)2)把稀疏数组存盘...原创 2022-01-27 16:46:54 · 664 阅读 · 0 评论 -
Go---golang操作Redis
获取go redis第三方库安装git ,在已安装好的终端上输入go get github.com/gomodule/redigo/redis会下载好第三方库到,GOPATH路径下使用Golang链接redispackage mainimport ("fmt""github.com/gomodule/redigo/redis" //引入redis包)func main() {//通过go 向redis 写入数据和读取数据//1.链接到redisconn,e原创 2022-01-21 17:34:26 · 1677 阅读 · 0 评论 -
Go---Redis使用
Redis1.Redis是NoSQL数据库,不是传统的关系型数据库2.Redis: REmoteDlctionary Server(远程字典版务器),Redis性能非常高,单机能够达到 15wqps,通常适合做缓存,也可以持久化。3.是完全开源免费的,高性能的(keylvalue)分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库,是最热门的NoSql数据库之—,也称为数据结构服务器4.Redis工作原理图启动redisRedis的命令参数网站Redis...原创 2022-01-21 13:10:38 · 1704 阅读 · 0 评论 -
Go---网络编程
网络编程有两种:1)TCP socket编程,是网络编程的主流。之所以叫Tcp socket编程,是因为底层是基于Tcp/ip协议的.。2)b/s结 构的http编程,我们使用浏览器去访问服务器时,使用的就是http协议,而http底层依旧是用tcp socket实现的。协议(tcp/ip)TCP/IP ( Transmission Control Protocol/Internet Protocol)的简写,中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议,这个协议是Intern...原创 2022-01-20 16:24:17 · 2034 阅读 · 0 评论 -
Go---反射
反射1) 反射可以在运行时动态获取变量的各种信息,比如变量的类型,类别2) 如果是结构体变量,还可以获取到结构体本身的信息(包括结构体的字段、方法)3) 通过反射,可以修改变量的值,可以调用关联的方法。4) 使用反射,需要 import ("reflect")5)反射的示意图反射的应用场景反射常见应用场景有以下两种1) 不知道接口调用哪个函数,根据传入参数在运行时确定调用的具体接口,这种需要对函数或方法反射。2)对结构体序列化时,如果结构体有指定Tag, 也会使用到反射.原创 2022-01-20 13:23:50 · 697 阅读 · 0 评论 -
Go---channel(管道)
需求,现在要计算1-200 的各个数的阶乘,并且把各个数的阶乘放入到map中。最后显示出来。要求使用goroutine完成➢分析思路:1) 使用goroutine来完成,效率高,但是会出现并发/并行安全问题.2) 这里就提出了不同goroutine如何通信的问题➢代码实现1) 使用goroutine来完成(看看使用gorotine 并发完成会出现什么问题?然后我们会去解决)2) 在运行某个程序时,如何知道是否存在资源竞争问题。方法很简单, 在编译该程序时,增加一个参数-race 即可go.原创 2022-01-19 17:27:40 · 464 阅读 · 0 评论 -
Go---goroutine(协程)
进程和线程说明1) 进程就是程序程序在操作系统中的一次执行过程,是系统进行资源分配和调度的基本单位2) 线程是进程的一个执行实例,是程序执行的最小单元,它是比进程更小的能独立运行的基本单 位。3) 一个进程可以创建和销毁多个线程,同一个进程中的多个线程可以并发执行。4) 一个程序至少有一个进程,一个进程至少有一个线程。并发和并行1) 多线程程序在单核上运行,就是并发2) 多线程程序在多核上运行,就是并行并发: 因为是在一个cpu上,比如有10个线程,每个线程执行10...原创 2022-01-19 10:30:57 · 364 阅读 · 0 评论 -
Go---单元测试
在工作中,我们会遇到这样的情况,就是去确认一个函数,或者一个模块的结果是否正确。传统方法的缺点分析1) 不方便.我们需要在main函数中去调用,这样就需要去修改main函数,如果现在项目正在运行,就可能去停止项目。2) 不利于管理,因为当我们测试多个函数或者多个模块时,都需要写在main函数,不利于我们管理和清晰我们思路3) 单元测试。-->testing 测试框架 可以很好解决间题。单元测试Go语言中自蒂有一个轻量级的测试框架testing和自带的go test命令来实现单元测试原创 2022-01-18 18:01:40 · 731 阅读 · 0 评论 -
Go---命令行参数、JSON
命令行参数os.Args是一个string的切片,用来存储所有的命令行参数实例package mainimport ("fmt""os")func main(){fmt.Println("命令行的参数有",len(os.Args))//遍历os.Args切片,就可以得到所有的命令行输入参数值for i,v := range os.Args {fmt.Printf("args[%v]=%v\n",i,v)}}flag包用来解析命令行参教前面的.原创 2022-01-18 15:59:22 · 655 阅读 · 0 评论 -
Go---文件
文件文件在程序中是以流的形式来操作的。流: 数据在数据源(文件]和程序(内存)之间经历的路径输入流: 数据从数据源(文件)到程序(内存)的路径输出流: 数据从程序(内存)到数据源(文件)的路径打开文件、关闭文件实例package mainimport ( "fmt" "os")func main(){ //概念说明: file 的叫法 //1. file叫file对象 //2. file叫file指针 //3...原创 2022-01-18 11:18:02 · 487 阅读 · 0 评论 -
Go---客户管理系统(修改)
1.目录结构2.customer.gopackage modelimport ( "fmt")//客户相关信息字段type Customer struct{ Id int Name string Gender string Age int Phone string Email string}//构造函数(工厂模式)func NewCustomer(id int,name string,ge...原创 2022-01-17 17:06:09 · 540 阅读 · 0 评论 -
Go---练习demo(记账)
1.目录结构2.familyAccount.gopackage pojoimport ( "fmt")type FamilyAccount struct{ //用于接收输入的选项 key string loop bool //定义账户余额 balance float64 //每次收支的金额 money float64 //每次收支的说明 note string ...原创 2022-01-17 10:44:47 · 319 阅读 · 0 评论 -
Go---接口2
对结构体排序案例package mainimport ( "fmt" "math/rand" "sort")//1.声明Hero结构体type Hero struct{ Name string Age int}//2.声明一个Hero结构体切片类型type HeroSlice []Hero//3.实现interface接口func (hs HeroSlice) Len() int { return ...原创 2022-01-14 12:40:49 · 65 阅读 · 0 评论 -
Go---接口
接口(interface)在Golang中多态特性主要是通过接口来体现的。简单案例package mainimport ( "fmt")type Usb interface{ //声明 没有实现的方法 Start() Stop()}type Phone struct{}//让phone 实现usb接口func (p Phone) Start(){ fmt.Println("开启手机")}func (p P...原创 2022-01-13 16:11:01 · 66 阅读 · 0 评论 -
Go---继承
继承继承可以解决代码复用。当多个结构体存在相同的属性(字段)和方法时,可以从这些结构体中抽象出结构体,在该结构体中定义这些相同的属性和方法。其它的结构体不需要重新定义这些属性和方法,只需嵌套一个匿名结构体即可。也就是说:在Golang中,如果一个struct嵌套了另一个匿名结构体,那么这个结构体可以直接访问匿名结构体的字段和方法,从而实现了继承特性。嵌套匿名结构体的基本语法type Goods struct { Name string Price int}type Book...原创 2022-01-13 14:30:24 · 706 阅读 · 0 评论 -
Go---工厂模式,封装
工厂模式Golang的结构体没有构造函数,通常可以使用工厂模式来解决这个问题。工厂模式来解决问题使用工厂模式实现跨包创建结构体实例(变量)的案例:1) 如果model 包的结构体变量首字母大写, 引入后,直接使用,没有问题.main.gopackage mainimport ( "fmt" "secondGo/factory/model")func main(){var stu = model.Student{ Name: " kegl...原创 2022-01-12 17:37:54 · 527 阅读 · 2 评论 -
Go---方法
方法Golang中的方法是作用在指定的数据类型上的(即:和指定的数据类型绑定),因此自定义类型,都可以有方法,而不仅仅是struct。方法的声明type A struct { Num int}func (a A) test(){fmt.Println(a .Num)}1) func(a A) test(){ } 表示A结构体有一方法,方法名为test2) (a A)体现test方法是和A类型绑定的for example//自定义结构体type A struct...原创 2022-01-12 15:36:03 · 290 阅读 · 0 评论 -
Go---面向对象(结构体)
Golang语言面向对象编程说明1) Golang也支持面向对象编程(OOP),但是和传统的面向对象编程有区别,并不是纯粹的面向对象语言。所以说Golang支持面向对象编程特性是比较准确的。2) Golang没有类(lass), Go语言的结构体(struct)和其它编程语言的类(class)有同等的地位,你可以理解Golang是基于struct来实现OOP特性的。3) Golang面向对象编程非常简洁,去掉了传统OOP语言的继承、方法重载、构造函数和析构函数、隐藏的this指针等等4) Gola原创 2022-01-12 10:07:49 · 347 阅读 · 0 评论 -
Go---Map
mapmap是key-value数据结构,又称为字段或者关联数组。类似其它编程语言的集合.基本语法var map 变量名 map[keytype]valuetypekey可以是什么类型 golang中的map,的 key可以是很多种类型,比如bool,数字,string,指针,channel ,还可以是只包含前面几个类型的接口,结构体,数组 .通常key为int . string注意: slice,map 还有function不可以,因为这几个没法用==来判断valuetype 可...原创 2022-01-11 15:15:55 · 137 阅读 · 0 评论 -
Go---排序、二维数组
排序排序是将一组数据,依指定的顺序进行排列的过程。排序的分类: 1) 内部排序: 指将需要处理的所有数据都加载到内部存储器中进行排序。 包括(交换式排序法、选择式排序法和插入式排序法); 2) 外部排序法: 数据量过大,无法全部加载到内存中,需要借助外部存储进行 排序。包括(合并排序法和直接合并排序法)。交换式排序法交换式排序属于内部排序法,是运用数据值比较后,依判断规则对数据位置进行交换,以达到排序的目的。交换式排序法又可分为两种: 1) 冒泡...原创 2022-01-10 15:34:32 · 546 阅读 · 0 评论 -
Go---切片
切片1) 切片的英文是slice2) 切片是数组的一个引用,因此切片是引用类型,在进行传递时,遵守引用传递的机制。3) 切片的使用和数组类似,遍历切片、访问切片的元素和求切片长度len(slice)都一样。4) 切片的长度是可以变化的,因此切片是一个可以动态变化数组。5) 切片定义的基本语法: var 切片名 []类型 比如: var a []intvar arr4 [5]int = [...]int{1,2,3,5,0}//声明/定义一个切片//slice...原创 2022-01-10 13:53:09 · 184 阅读 · 0 评论 -
Go---数组
数组数组可以存放多个同一类型数据。数组也是一种数据类型,在Go中,数组是值类型。 //定义一个数组 var hei [3]float64 //给数组中每个元素赋值,元素的下标是从0开始的 hei[0] = 0.2 hei[1] = 1.2 hei[2] = 2.2 //遍历数组 sum := 0.0 for i:=0; i<len(hei); i++{ sum += hei[i] }...原创 2022-01-07 15:55:12 · 1748 阅读 · 0 评论 -
Go --- 字符串、时间、日期函数
字符串中常用的函数1) 统计字符串的长度, 按字节len(str)2)字符串遍历,同时处理有中文的问题r:= []rune(str)3)字符串转整数: n, err := strconv.Atoi["12")4)整数转字符串str = srconv.ltoa(12345)5)字符串转[]byte: var bytes = []byte("hello go")6) []byte 转字符串: str= string(]byte{97, 98, 99))7) 10进制转 2, 8, 16进制: s原创 2022-01-06 17:52:00 · 848 阅读 · 0 评论 -
Go---函数2
init函数每一个源文件都可以包含一个init函数, 该函数会在main函数执行前,被Go运行框架调用,也就是说init 会在main函数前被调用。package mainimport ("fmt")//init函数,通常可以在init函数中完成初始化工作func init(){fmt.Println("init......")}func main(){fmt.Println("main......")}细节1)如果一个文件同时包含全局变量定义,in原创 2022-01-06 14:14:39 · 284 阅读 · 0 评论 -
Go---函数
函数为完成某一功能的程序指令(语句)的集合,称为函数。在Go中,函数分为: 自定义函数、系统函数(查着Go编程手册)基本语法func 函数名 (形参列表) (返回值列表) { 执行语句.. return 返回值列表}1)形参列表: 表示函数的输入2)函数中的语句: 表示为了实现某-功能代码块3)函数可以有返回值,也可以没有func cal(n1 float64 ,n2 float64 ,operator byte) float64 { var res f...原创 2022-01-06 10:02:09 · 273 阅读 · 0 评论 -
Go---循环控制
for循环控制基本语法for 循环变量初始化;循环条件;循环变量迭代 { 循环操作(语句)}for i := 1;i<=9;i++{ fmt.Println("you are you are")}for循环执行的顺序1)执行循环变量初始化,比如i = 12)执行循环条件。比如 i <= 93)如果循环条件为真,就执行循环操怍,比如fmt.Println("you are you are")4)执行循环充量迭代.比如 i++5)反复执行2.3.4 步...原创 2022-01-05 14:26:11 · 604 阅读 · 0 评论 -
Go---流程控制
介绍在程序中,程序运行的流程控制决定程序是如何执行的,主要有三大流程控制语句。1) 顺序控制2) 分支控制3) 循环控制一、顺序控制顺序控制介绍程序从上到下逐行地执行,中间没有任何判断和跳转。二、 分支控制让程序有选择的的执行,分支控制有三种:1) 单分支2) 双分支3) 多分支单分支基本语法if 条件表达式 { 执行代码块}说明: 当条件表达式为ture时,就会执行{ }的代码。注意{ }是必须有的。 var age int ...原创 2022-01-04 16:03:37 · 336 阅读 · 0 评论 -
Go---进制
进制对于整数,有四种表示方式:1). 二进制: 0,1,满2进1。 在golang中,不能直接使用二进制来表示一个整数,它沿用了c 的特点。 var i int = 3 fmt.Printf("3的二进制=%b",i)2). 十进制: 0-9,满10进1。3). 八进制: 0-7,满8进1。 以数字0开头表示。4). 十六进制: 0-9及A-F,满16进1。 以Ox或0X开头表示。此处的A-F不区分大小写。如:Ox21AF +1= 0X21B0...原创 2022-01-04 14:11:15 · 1071 阅读 · 0 评论 -
Go---运算符
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等1.算术运算符2.赋值运算符3.比较运算符4.逻辑运算苻5.位运算符6.其它运算符算术运算符算术运算符是对数值类型的变量进行运算的,比如:加减乖除。练习//如果运算的数都是整数,那么除后,去掉小数部分,保留整数部分 fmt.Println(10 / 4)//---->2 var num1 float64 = 10 / 4 fmt.Println(num1)//---->...原创 2021-12-28 13:50:18 · 603 阅读 · 0 评论 -
Go---指针
简介1). 基本数据类型,变量存的就是值,也叫值类型2). 获取变量的地址,用&,比如:var num int,获取num的地址: &num3). 指针类型,变量存的是一个地址,这个地址指向的空间存的才是值 比如: var ptr *int = &num4). 获取指针类型所指向的值,使用: *,比如: var *ptr int,使用 *ptr 获取 p指向的值...原创 2021-12-28 09:38:11 · 217 阅读 · 0 评论 -
Go---基本数据类型
在go中,数据类型都有一个默认值,当没有赋值时,就会保留默认值,在go中,默认值又叫零值。基本数据类型默认值基本数据类型的转换Go在不同类型的变量之间赋值时需要显式转换。也就是说Golang中数据类型不能自动转换。基本语法表达式 T(v) 将值V 转换为类型T : 就是数据类型、比如int32. int64. float32等等v: 就是需要转换的变帚var i int32 =100//i ===> floatvar j float32 = float3...原创 2021-12-27 12:32:35 · 498 阅读 · 0 评论 -
GO---go基础
Dos的常用指令dos的基本介绍Dos: Disk Operating System 磁盘操作系统。原创 2021-12-24 15:54:12 · 570 阅读 · 0 评论 -
Go---go开篇
Go语言保证了既能到达静态编译语言的安全和性能,又达到了动态语言开发维护的高效率。1). 从c语言中继承了很多理念,包括表达式语法,控制结构,基础数据类型,调用参数传值,指针等等,也保留了和c语言一样的编译执行方式及弱化的指针。2). 引入包的概念,用于组织程序结构,Go语言的一个文件都要归属于一个包,而不能单独存在。3). 垃圾回收机制,内存自动回收,不需开发人员管理4) . 天然并发(1) 从语言层面支持并发,实现简单(2) goroutine,轻量级线程,可实现大并发处理,高效利用多核.原创 2021-12-17 17:01:58 · 1191 阅读 · 0 评论