补充函数与字符串
补充关于闭包,递归,匿名函数,回调函数,strings包、strconv包的使用。
闭包go语言支持函数式编程:支持将一个函数作为另一个函数的参数,也支持将一个函数作为另一个函数的返回值。
闭包(closure): 一个外层函数中,有内层函数,该内层函数中,会操作外层函数的局部变量(外层函数中的参数,或者外层函数中直接定义的变量),并且该外层函数的返回值就是这个内层函数。这个内层函数和外层函数的局部变量,统称为闭包结构。
局部变量的生命周期会发生改变,正常的局部变量随着函数调用而创建,随着函数的结束而销毁。但是闭包结构中的外层函数的局部变量并不会随着外层函数的结束而销毁,因为内层函数还要继续使用。
示例代码:
1234567891011121314151617181920212223242526272829303132333435363738package mainimport "fmt"func main() { res1 := increment() //res1 = fun fmt.Printf("%T\n" ...
方法与接口
方法什么是方法Go 语言中同时有函数和方法。一个方法就是一个包含了接受者的函数,接受者可以是命名类型或者结构体类型的一个值或者是一个指针。所有给定类型的方法属于该类型的方法集。
方法只是一个函数,它带有一个特殊的接收器类型,它是在func关键字和方法名之间编写的。接收器可以是struct类型或非struct类型。接收方可以在方法内部访问。
方法的语法定义方法的语法
123456func (t Type) methodName(parameter list)(return list) { }func funcName(parameter list)(return list){ }
示例代码:
123456789101112131415161718192021222324252627package mainimport ( "fmt")type Employee struct { name string salary int currency string} ...
指针与结构体
指针指针的概念指针是存储另一个变量的内存地址的变量。
我们都知道,变量是一种使用方便的占位符,用于引用计算机内存地址。
一个指针变量可以指向任何一个值的内存地址。
获取变量的地址Go 语言的取地址符是 &,放到一个变量前使用就会返回相应变量的内存地址。
123456789package mainimport "fmt"func main() { var a int = 10 fmt.Printf("变量的地址: %x\n", &a )}
运行结果:
1变量的地址: 20818a220
声明指针声明指针,*T是指针变量的类型,它指向T类型的值。
1var var_name *var-type
var-type 为指针类型,var_name 为指针变量名,* 号用于指定变量是作为一个指针。
12var ip *int /* 指向整型*/var fp *float32 /* 指向浮点型 */
示例代码:
123456789101112131415161718package ...
函数与defer
函数什么是函数函数是执行特定任务的代码块。
函数的声明go 语言至少有一个 main 函数
语法格式:
12345func funcName(parametername type1, parametername type2) (output1 type1, output2 type2) {//这里是处理逻辑代码//返回多个值return value1, value2}
func:函数由 func 开始声明
funcName:函数名称,函数名和参数列表一起构成了函数签名。
parametername type:参数列表,参数就像一个占位符,当函数被调用时,你可以将值传递给参数,这个值被称为实际参数。参数列表指定的是参数类型、顺序、及参数个数。参数是可选的,也就是说函数也可以不包含参数。
output1 type1, output2 type2:返回类型,函数返回一列值。return_types 是该列值的数据类型。有些功能不需要返回值,这种情况下 return_types 不是必须的。
上面返回值声明了两个变量 output1 和 output2,如果你不想声明也 ...
数据库期末复习
第一章 数据库系统概论
在数据库管理系统的层次结构中,下面哪个层次负责对数据文件进行操作访问?A.操作界面层 B.语言翻译处理层 C.数据存取层 D.数据存储层
根据处理对象的不同,数据库管理系统的层次结构由外至内依次为应用层、语言翻译处理层、数据存取层、数据存储层。
(1)应用层:是数据库管理系统与终端用户和应用程序的界面,负责处理各种数据库应用,如使用结构化查询语言SQL发出的事务请求或嵌入通用的程序设计语言的应用程序对数据库的请求。
(2)语言处理层:由DDL编译器、DML编译器、DCL编译器、查询器等组成,负责完成对数据库语言的各类语句进行词法分析、语法分析和语义分析,生成可执行的代码。此外,还负责进行授权检验、视图转换、完整性检查、查询优化等。
(3)数据存取层:将上层的集合操作转换为对记录的操作,包括扫描、排序、查找、插入、删除、修改等,完成数据的存取、路径的维护以及并发控制等任务。
(4)数据存储层:由文件管理器和缓冲区管理器组成,负责完成数据的页面存储和系统的缓冲区管理等任务,包括打开和关闭文件、读写页面、读写缓冲区、页面淘汰、内外存交换以及外层管理 ...
数组&切片&集合&字符串
数组(Array)什么是数组Go 语言提供了数组类型的数据结构。数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形、字符串或者自定义类型。
数组元素可以通过索引(位置)来读取(或者修改),索引从0开始,第一个元素索引为 0,第二个索引为 1,以此类推。数组的下标取值范围是从0开始,到长度减1。
数组一旦定义后,大小不能更改。
数组的语法声明和初始化数组
需要指明数组的大小和存储的数据类型。
1var variable_name [SIZE] variable_type
示例代码:
12var balance [10] float32var balance = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
初始化数组中 {} 中的元素个数不能大于 [] 中的数字。如果忽略 [] 中的数字不设置数组大小,Go 语言会根据元素的个数来设置数组的大小:
1var balance = []float32{1000.0, 2.0, 3.4, 7.0, 50.0}
1balan ...
软件测试临考总结
由于老师明确说不考概念记忆题😆,并且从我们这届开始改版全部是大题😤,所以就不要背那么多干巴巴的知识点啦~,但是一些必要的概念还是得大致知道啥意思吧,以下内容都基于老师发的PPT(●’◡’●)
第一章 引论软件测试(Software Testing)是一种检测软件的正确性、完整性、安全性和评估其质量的活动过程。换句话说,软件测试是一种以发现程序错误、衡量软件质量为目的,并对其是否满足用户需求进行评估的活动过程。
软件质量保证(Software Quality Assurance,SQA)是指通过对软件产品进行有计划的评审与审计,来确保软件开发按照产品质量过程标准实施项目的管理活动。
软件质量保证与软件测试的关系:
SQA指导软件测试的计划与执行,监督测试工作结果的客观性、准确性与有效性,并协助软件测试的工作流程改进。
软件测试是SQA工作落实的重要手段,它为SQA提供所需的质量数据,作为软件质量评价的客观依据。
SQA是一项软件质量管理性工作,侧重于对软件开发流程进行评审与监控。
软件测试是一项技术性工作,侧重于对软件质量特性进行检测与验证。
测试驱动开发(Test-Driven ...
条件语句与循环语句
程序的流程结构程序的流程控制结构一共有三种:顺序结构,选择结构,循环结构。
顺序结构:从上向下,逐行执行。
选择结构:条件满足,某些代码才会执行。0-1次
分支语句:if,switch,select
循环结构:条件满足,某些代码会被反复的执行多次。0-N次
循环语句:for
条件语句If语句语法格式:
123if 布尔表达式 { /* 在布尔表达式为 true 时执行 */}
12345if 布尔表达式 { /* 在布尔表达式为 true 时执行 */} else { /* 在布尔表达式为 false 时执行 */}
1234567if 布尔表达式1 { /* 在布尔表达式1为 true 时执行 */} else if 布尔表达式2{ /* 在布尔表达式1为 false ,布尔表达式2为true时执行 */} else{ /* 在上面两个布尔表达式都为false时,执行*/}
示例代码:
123456789101112131415p ...
数据类型与输入输出
基本语法——数据类型基本数据类型以下是go中可用的基本数据类型
布尔型bool布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true
数值型1、整数型
int8有符号 8 位整型 (-128 到 127)长度:8bit
int16有符号 16 位整型 (-32768 到 32767)
int32有符号 32 位整型 (-2147483648 到 2147483647)
int64有符号 64 位整型 (-9223372036854775808 到 9223372036854775807)
uint8无符号 8 位整型 (0 到 255)8位都用于表示数值:
uint16无符号 16 位整型 (0 到 65535)
uint32无符号 32 位整型 (0 到 4294967295)
uint64无符号 64 位整型 (0 到 18446744073709551615)
int和uint:根据底层平台,表示32或64位整数。除非需要使用特定大小的整数,否则通常应该使用int来表示整数。大小:32位系统32位, ...
变量与常量
基本语法——变量var变量的使用什么是变量变量是为存储特定类型的值而提供给内存位置的名称。在go中声明变量有多种语法。
所以变量的本质就是一小块内存,用于存储数据,在程序运行过程中数值可以改变
声明变量var名称类型是声明单个变量的语法。
以字母或下划线开头,由一个或多个字母、数字、下划线组成
声明一个变量
第一种,指定变量类型,声明后若不赋值,使用默认值
12var name typename = value
第二种,根据值自行判定变量类型(类型推断Type inference)
如果一个变量有一个初始值,Go将自动能够使用初始值来推断该变量的类型。因此,如果变量具有初始值,则可以省略变量声明中的类型。
1var name = value
第三种,省略var, 注意 :=左侧的变量不应该是已经声明过的(多个变量同时声明时,至少保证一个是新变量),否则会导致编译错误(简短声明)
12345name := value// 例如var a int = 10var b = 10c : = 10
这种方式它只能被用在函数体内,而不可以用于全局变量的声明与赋值
示例代码: ...