随笔分类 - Go
Go语言的学习之路
摘要:反射的应用场景:结构体的tag(标签)底层用到的就是反射;编写函数的适配器 ,桥连接(自己设计go的框架); 基本介绍 1.反射可以在运行时动态获取变量的各种信息,比如变量的类型(type),类别(kind); 2.如果是结构体变量(实例),还可以获取到结构体本身的信息(包括结构体的字段,方法);
阅读全文
摘要:进程和线程的说明: 1.进程就是程序在操作系统中的一次执行过程,是系统进行资源分配和调度的基本单位。 2.线程是进程的一个执行实例,是程序执行的最小单元,它是比进程更小的能独立运行的基本单位。 3.一个进程可以创建和销毁多个线程,同一个进程中的多个线程可以并发执行。 4.一个程序至少有一个进程,一个
阅读全文
摘要:引入: 在我们工作中,我们会遇到需要去确认一个函数,或者一个模块的结果是否正确? 传统方法缺点: 1.不方便,我们需要在main的函数中去调用,这样就需要去修改main函数,如果项目正在运行,就可能去停止项目。 2.不利于管理,因为当我们测试多个函数或者多个模块时,都需要写在main函数,不利于我们
阅读全文
摘要:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写。同时也易于机器解析和生成;key-val JSON是在2001年开始推广使用的数据格式,目前已经成为主流的数据格式。 JSON易于机器解析和生成,并有效地提升网络传输效率,通常程序在网络传
阅读全文
摘要:引入: 我们希望能够获取到命令行输入的各种参数,该如何处理? 基本介绍 os.Args是一个string的切片([]string , 且第一个参数即程序名称),用来存储所有的命令行参数; 案例: // 获取命令行参数 个数 fmt.Println("命令行参数有=", len(os.Args)) /
阅读全文
摘要:基本介绍 文件对我们并不陌生,文件是数据源(保存数据的地方)的一种,比如大家经常使用的word文档,txt文件,excel文件...都是文件。文件最主要的作用就是保存数据,它既可以保存一张图片,也可以保存视频,声音... 文件在程序中是以流的形式来操作的; 流:数据在数据源(文件) 和程序(内存)之
阅读全文
摘要:基本介绍 类型断言,由于接口是一般类型,不知道具体类型,如果要转成具体类型,就需要使用类型断言,具体如下: var a interface{} var b float64 = 1.22 a = b // 空接口可以接收任何类型 // 那如何把 a 变为 float64呢 x := a.(float6
阅读全文
摘要:基本介绍 变量(实例)具有多种形态。面向对象的第三大特征,在Go语言中,多态特征是通过接口实现的。可以按照统一的接口来调用不同的实现。这时接口变量就呈现不同的形态。 接口体现多态两种形式 1.多态参数 在前面的Usb接口案例,Usb usb, 即可以接收手机变量,又可以接收相机变量,就体现了Usb接
阅读全文
摘要:为什么需要接口? usb插槽就是现实中的接口,你可以把手机,相机,U盘都插在usb插槽上,而不用担心那个插槽是专门插哪个的,原因是做usb插槽的厂家和做各种设备的厂家都遵守了统一的规定包括尺寸,排线等等(一个接口解决所有的外设)。 在Golang中,多态特性主要是通过接口来实现的。 耦合性降低,通用
阅读全文
摘要:面向对象编程三大特性 Golang任然有面向对象编程的继承,封装和多态的特性,只是实现的方式和其他OOP语言不一样; 如何理解抽象?(研究问题的方法或者编程思想) 我之前定义一个结构体的时候,实际上就是把一类事物的共有的属性(字段)和行为(方法)提取出来,形成一个物理模型(模板),这种研究问题的方法
阅读全文
摘要:Golang的结构体没有构造函数,通常可以使用工厂模式来解决这个问题; 需求: 当我们在model中定义结构体时,当结构体名称首字母大写Student 那么可以跨包使用,但是要是小写student,怎么办呢?这就需要使用工厂模式来解决: 引包要从src的目录下开始,src不用写; 示例: type
阅读全文
摘要:基本介绍 在某些情况下,我们需要声明(定义)方法,比如Person结构体,除了有一些字段外(年龄,姓名...), Person结构体还有一些行为比如:可以说话,跑步...通过学习,还可以做算术题,这时就要用方法才能完成; Golang中的方法是作用在指定的数据类型上的(即,和指定的数据类型绑定),因
阅读全文
摘要:结构体的介绍 Golang也支持面向对象编程(OOP),但是和传统的面向对象编程有区别,并不是纯粹的面向对象语言。所以我们说Golang支持面向对象编程特性是比较准确的。 Golang没有类(class),go语言的结构体(struct)和其他编程语言的类(class)有同等地位,可以理解golan
阅读全文
摘要:map的介绍: map是key-value数据结构,又称为字段或者关联数组。类似其他编程语言的集合,在编程中是经常使用的; 基本语法: var map 变量名 map[key type]value type key 可以是什么类型? golang中的map的key可以是很多种类型,比如bool, 数
阅读全文
摘要:// 二分查找 func BinaryFind(arr *[6]int, lindex int, rindex int, target int) { // 当 lindex > rindex 时 是肯定找不到的 if lindex > rindex { fmt.Println("找不到~~~") r
阅读全文
摘要:// 冒泡排序算法 bubble_arr := [...]int{24,69,90,57,13} func BubbleSort(arr *[5]int) { // 因为数组是值类型,所以修改元素位置是修改数组,所以需要引用传递来实现 fmt.Println("排序前arr=", (*arr)) v
阅读全文
摘要:切片的基本介绍 在不确定个数的多少的情况下,我就不能使用固定长度的数组了 1.切片的英文slice 2.切片是数组的一个引用,因此切片是引用数据类型,在进行传递时,遵守引用传递的机制; 3.切片的使用和数组类似,遍历切片,访问切片的元素和求切片长度len(slice) 都一样; 4.切片的长度是可以
阅读全文
摘要:数组 为什么需要数组?为了更方便的管理一些基本的数据; 数组可以存放多个同一类型数据,数组也是一种数据类型,在Go中,数组是值类型。 数组的定义: var 数组名 [数组大小]数据类型 var a [5]int 赋初始值 a[0] = 1 a[1] = 20 .... 1.数组不赋值的话,默认每个元
阅读全文
摘要:1.在默认情况下,当发生错误后(panic),程序就会出现退出(崩溃); 2.如果我们希望,当发生错误后,可以捕获到错误,并进行处理,保证程序可以继续执行,还可以在捕获到错误后,给管理员一个提示(邮件,短信...); Go语言追求简洁优雅,所以,Go语言不支持传统的try...catch...fin
阅读全文
摘要:在编程中,程序员会经常使用到日期相关的函数,例如:统计某段代码执行花费的时间等等; 1.时间和日期相关函数,都是在time包中; // 获取当前时间 now := time.Now() // 输出结果:now=2020-11-09 18:29:17.9963558 +0800 CST m=+0.00
阅读全文