随笔分类 -  go语言基础

摘要:go test工具 Go语言中的测试依赖go test命令。编写测试代码和编写普通的Go代码过程是类似的,并不需要学习新的语法、规则或工具。 go test命令是一个按照一定约定和组织的测试代码的驱动程序。在包目录内,所有以_test.go为后缀名的源代码文件都是go test测试的一部分,不会被g 阅读全文
posted @ 2019-12-13 16:57 凯帅 阅读(430) 评论(0) 推荐(0)
摘要:异常处理模板 package main import "fmt" //异常处理 //defer panic recover //defer 表示延迟调用,即便程序出现严重错误,也会执行 //panic 就是python中的raise(主动抛出异常) //recover 恢复程序,继续执行 func 阅读全文
posted @ 2019-12-12 15:15 凯帅 阅读(199) 评论(0) 推荐(0)
摘要:变量的内在机制 Go语言中的变量是分为两部分的: 类型信息:预先定义好的元信息。 值信息:程序运行过程中可动态变化的。 反射介绍 反射是指在程序运行期对程序本身进行访问和修改的能力。程序在编译时,变量被转换为内存地址,变量名不会被编译器写入到可执行部分。在运行程序时,程序无法获取自身的信息。 支持反 阅读全文
posted @ 2019-12-09 19:00 凯帅 阅读(478) 评论(0) 推荐(0)
摘要:在工程化的Go语言开发项目中,Go语言的源码复用是建立在包(package)基础之上的。 Go语言的包(package) 包介绍 包(package)是多个Go源码的集合,是一种高级的代码复用方案,Go语言为我们提供了很多内置包,如fmt、os、io等。 定义包 我们还可以根据自己的需要创建自己的包 阅读全文
posted @ 2019-12-06 20:23 凯帅 阅读(197) 评论(0) 推荐(0)
摘要:接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节。 接口 接口类型 在Go语言中接口(interface)是一种类型,一种抽象的类型。 interface是一组method的集合,是duck-type programming的一种体现。接口做的事情就 阅读全文
posted @ 2019-12-06 20:22 凯帅 阅读(166) 评论(0) 推荐(0)
摘要:文件是什么? 计算机中的文件是存储在外部介质(通常是磁盘)上的数据集合,文件分为文本文件和二进制文件。 打开和关闭文件 os.Open()函数能够打开一个文件,返回一个*File和一个err。对得到的文件实例调用close()方法能够关闭文件。 package main import ( "fmt" 阅读全文
posted @ 2019-12-06 20:21 凯帅 阅读(415) 评论(0) 推荐(0)
摘要:类型别名和自定义类型 自定义类型 在Go语言中有一些基本的数据类型,如string、整型、浮点型、布尔等数据类型, Go语言中可以使用type关键字来定义自定义类型。 自定义类型是定义了一个全新的类型。我们可以基于内置的基本类型定义,也可以通过struct定义。例如: //将MyInt定义为int类 阅读全文
posted @ 2019-12-05 20:07 凯帅 阅读(317) 评论(0) 推荐(0)
摘要:// Count 计算字符串 sep 在 s 中的非重叠个数// 如果 sep 为空字符串,则返回 s 中的字符(非字节)个数 + 1// 使用 Rabin-Karp 算法实现 func Count(s, sep string) int func main() { s := "Hello,世界!!! 阅读全文
posted @ 2019-12-04 15:46 凯帅 阅读(534) 评论(0) 推荐(0)
摘要:函数 Go语言中支持函数、匿名函数和闭包,并且函数在Go语言中属于“一等公民”。 函数定义 Go语言中定义函数使用func关键字,具体格式如下: func 函数名(参数)(返回值){ 函数体 } 其中: 函数名:由字母、数字、下划线组成。但函数名的第一个字母不能是数字。在同一个包内,函数名也称不能重 阅读全文
posted @ 2019-12-04 15:23 凯帅 阅读(313) 评论(0) 推荐(0)
摘要:map map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。 map定义 Go语言中 map的定义语法如下: map[KeyType]ValueType 其中, KeyType:表示键的类型。 ValueType:表示键对应的值的类型。 map类型的 阅读全文
posted @ 2019-12-02 21:46 凯帅 阅读(586) 评论(0) 推荐(0)
摘要:Go语言中的指针 区别于C/C++中的指针,Go语言中的指针不能进行偏移和运算,是安全指针。 要搞明白Go语言中的指针需要先知道3个概念:指针地址、指针类型和指针取值。 任何程序数据载入内存后,在内存都有他们的地址,这就是指针。而为了保存一个数据在内存中的地址,我们就需要指针变量。 比如,“永远不要 阅读全文
posted @ 2019-12-02 20:53 凯帅 阅读(153) 评论(0) 推荐(0)
摘要:引子 因为数组的长度是固定的并且数组长度属于类型的一部分,所以数组有很多的局限性。 例如: func arraySum(x [3]int) int{ sum := 0 for _, v := range x{ sum = sum + v } return sum } 这个求和函数只能接受[3]int 阅读全文
posted @ 2019-12-02 16:00 凯帅 阅读(242) 评论(0) 推荐(0)
摘要:Array(数组) 数组是同一种数据类型元素的集合。 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化,并且属于最底层。 基本语法: // 定义一个长度为3元素类型为int的数组a var a [3]int 数组定义: var 数组变量名 [元素数量]T 比如:var 阅读全文
posted @ 2019-12-01 21:37 凯帅 阅读(223) 评论(0) 推荐(0)
摘要:流程控制:是每种编程语言控制逻辑走向和执行次序的重要部分,流程控制可以说是一门语言的“经脉”。 Go语言中最常用的流程控制有if和for,而switch和goto主要是为了简化代码、降低重复代码而生的结构,属于扩展类的流程控制。 if else(分支结构) if条件判断基本写法 Go语言中if条件判 阅读全文
posted @ 2019-12-01 21:31 凯帅 阅读(185) 评论(0) 推荐(0)
摘要:golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf。 # 定义示例类型和变量 type Human struct { Name string } var people = Human{Name:"zhangsan"} 普通占位符 占位符 说明 举例 输出 %v 阅读全文
posted @ 2019-12-01 15:01 凯帅 阅读(197) 评论(0) 推荐(0)
摘要:Go语言基础之运算符 运算符用于在程序运行时执行数学或逻辑运算。 运算符 Go 语言内置的运算符有: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 算数运算符 运算符描述 + 相加 - 相减 * 相乘 / 相除 % 求余 注意: ++(自增)和--(自减)在Go语言中是单独的语句,并不是 阅读全文
posted @ 2019-11-30 23:40 凯帅 阅读(566) 评论(0) 推荐(0)
摘要:Go语言中有丰富的数据类型,除了基本的整型、浮点型、布尔型、字符串外,还有数组、切片、结构体、函数、map、通道(channel)等。Go 语言的基本类型和其他语言大同小异。 基本数据类型 整型 整型分为以下两个大类: 按长度分为:int8、int16、int32、int64 对应的无符号整型:ui 阅读全文
posted @ 2019-11-30 23:37 凯帅 阅读(158) 评论(0) 推荐(0)
摘要:标识符与关键字 标识符 在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变量名、常量名、函数名等等。 Go语言中标识符由字母数字和_(下划线)组成,并且只能以字母和_开头。 举几个例子:abc, _, _123, a123。 关键字 关键字是指编程语言中预先定义好的具有特殊含义的标识符。 关 阅读全文
posted @ 2019-11-30 23:31 凯帅 阅读(196) 评论(0) 推荐(0)