Golang
文章平均质量分 63
golang
H . C . Y
拥抱开源,学无止境,学以致用。
展开
-
Goalng排序算法:冒泡排序
冒泡排序名字由来冒泡排序的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同气泡最终会上浮到顶端一样,故名“冒泡排序”。原理冒泡排序法是一种最简单的交换类排序方法,它是通过相邻数据的交换逐步将无序列表排列为有序列表。冒泡排序的基本原理是重复地循环遍历要排序的元素列,依次比较两个相邻的元素,如果顺序(如从小到大或者首字母从 Z 到 A)错误就把两个元素的位置交换过来,直到没有相邻元素需要交换,也就是说该元素列已经排序完成。源码package mainimp原创 2021-10-06 14:34:41 · 287 阅读 · 0 评论 -
Golang案例:编写功能测试和性能测试
功能测试和性能测试代码说明GitHub代码链接代码结构说明split.gopackage splitimport "strings"func Split(s, sep string) (ret []string) { idx := strings.Index(s, sep) for idx > -1 { ret = append(ret, s[:idx]) s = s[idx+len(sep):] idx = strings.Index(s,原创 2021-10-03 17:13:30 · 327 阅读 · 0 评论 -
Golang案例:defer 的使用
defer 的使用下面这段代码输出的内容package main import ( "fmt" ) func main() { defer_call() }func defer_call() { defer func() { fmt.Println("打印前") }() defer func() { fmt.Println("打印中") }() defer func() { fmt.Println("打印后") }() panic(原创 2021-09-14 21:02:59 · 260 阅读 · 0 评论 -
Golang案例:for range 循环常见错误
下面这段代码输出什么,说明原因。func main() { slice := []int{0,1,2,3} m := make(map[int]*int) for key,val := range slice { m[key] = &val } for k,v := range m { fmt.Println(k,"->",*v) }}直接给答案: 0 -> 3 .原创 2021-09-14 21:10:23 · 718 阅读 · 0 评论 -
docker 最小镜像(scratch:latest)与golang程序结合,从零构建后端镜像
docker 最小镜像(scratch:latest)一、简介:Scratch镜像很赞,它简洁、小巧而且快速,它没有bug、安全漏洞、延缓的代码或技术债务。除了被Docker添加了metadata (译注:元数据为描述数据的数据)之外,它基本上是空的。我们在使用Dockerfile构建docker镜像时,一种方式是使用官方预先配置好的容器镜像。优点是我们不用从头开始构建,节省了很多工作量,但付出的代价是需要下载很大的镜像包。如果我们的需求是在构建一个符合我们实际业务需求的Docker镜像的前提下,确原创 2021-08-24 21:55:44 · 2414 阅读 · 0 评论 -
Go语言基础之反射
系列文章目录文章目录系列文章目录前言一、反射介绍1、reflect包1)TypeOf2)type name和type kind3)ValueOf3.1)通过反射获取值3.2)通过反射设置变量的值4、isNil()和isValid()4.1)isNil()4.2)isValid()二、结构体反射1、StructField类型2、结构体反射示例前言变量的内在机制Go语言中的变量是分为两部分的:类型信息:预先定义好的元信息。值信息:程序运行过程中可动态变化的。一、反射介绍反射是指在程序运行期对原创 2021-03-16 16:48:03 · 217 阅读 · 0 评论 -
Go语言基础之结构体
系列文章目录文章目录系列文章目录前言一、类型别名和自定义类型1、自定义类型2、类型别名3、类型定义和类型别名的区别二、结构体1、结构体实例化2、匿名结构体3、创建指针类型结构体4、取结构体的地址实例化1)结构体初始化2)使用键值对初始化3)使用值的列表初始化三、构造函数1、调用构造函数1)方法和接收者2)指针类型的接收者3)值类型的接收者4)任意类型添加方法四、结构体的匿名字段1、嵌套结构体2、嵌套匿名字段3、嵌套结构体的字段名冲突4、结构体的“继承”5、结构体字段的可见性6、结构体标签(Tag)7、结构原创 2021-03-14 18:06:08 · 173 阅读 · 0 评论 -
Go语言基础之指针
系列文章目录文章目录系列文章目录前言一、指针地址和指针类型1、取变量指针2、指针取值三、new和make一、New2、make3、new与make的区别前言要搞明白Go语言中的指针需要先知道3个概念:指针地址、指针类型和指针取值。Go语言中的指针任何程序数据载入内存后,在内存都有他们的地址,这就是指针。而为了保存一个数据在内存中的地址,我们就需要指针变量。比如,“永远不要高估自己”这句话是我的座右铭,我想把它写入程序中,程序一启动这句话是要加载到内存(假设内存地址0x123456),我在程序中把原创 2021-03-13 23:00:53 · 270 阅读 · 0 评论 -
Go语言基础之map
系列文章目录文章目录系列文章目录前言一、map定义二、map基本使用三、map支持在声明的时候填充元素四、判断某个键是否存在五、map的遍历六、使用delete()函数删除键值对七、按照指定顺序遍历map八、元素为map类型的切片九、值为切片类型的map前言map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。一、map定义Go语言中 map的定义语法如下:map[KeyType]ValueType其中,KeyType:表示键的类型。Val原创 2021-03-13 22:30:09 · 1338 阅读 · 0 评论 -
Go语言基础之切片
系列文章目录文章目录系列文章目录引子切片一、切片的定义二、简单切片表达式三、完整切片表达式1、使用make()函数构造切片2、切片的本质3、切片不能直接比较4、切片的赋值拷贝5、切片遍历6、append()方法为切片添加元素7、Copy的使用8、从切片中删除元素引子因为数组的长度是固定的并且数组长度属于类型的一部分,所以数组有很多的局限性。 例如:func arraySum(x [3]int) int{ sum := 0 for _, v := range x{ su原创 2021-03-13 22:17:48 · 163 阅读 · 0 评论 -
Go语言基础之数组
系列文章目录文章目录系列文章目录Array(数组)数组的初始化方法一方法二数组的遍历Array(数组)数组是同一种数据类型元素的集合。 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化。 基本语法:// 定义一个长度为3元素类型为int的数组avar a [3]int//数组定义:var 数组变量名 [元素数量]T比如:var a [5]int, 数组的长度必须是常量,并且长度是数组类型的一部分。一旦定义,长度不能变。 [5]int和[10]int是不同的类原创 2021-03-13 21:19:53 · 500 阅读 · 0 评论 -
Go语言基础之流程控制
文章目录前言一、if else(分支结构)二、for循环的基本格式如下三、switch case前言流程控制是每种编程语言控制逻辑走向和执行次序的重要部分,流程控制可以说是一门语言的“经脉”。Go语言中最常用的流程控制有if和for,而switch和goto主要是为了简化代码、降低重复代码而生的结构,属于扩展类的流程控制。一、if else(分支结构)1、if条件判断基本写法,Go语言中if条件判断的格式如下:if 表达式1 { 分支1} else if 表达式2 { 分原创 2021-03-13 21:03:56 · 143 阅读 · 0 评论 -
Go语言基础之运算符
文章目录前言算数运算符运算符描述关系运算符逻辑运算符位运算符赋值运算符前言算数运算符运算符描述+ 相加- 相减* 相乘/ 相除% 求余注意: ++(自增)和- -(自减)在Go语言中是单独的语句,并不是运算符。关系运算符== 检查两个值是否相等,如果相等返回 True 否则返回 False。!= 检查两个值是否不相等,如果不相等返回 True 否则返回 False。> 检查左边值是否大于右边值,如果是返回 True 否则返回 False。>= 检查左边值是否大于原创 2021-03-13 20:44:50 · 287 阅读 · 0 评论 -
Go语言基础之基本数据类型
文章目录前言一、基本数据类型整型类型描述特殊整型浮点型布尔值字符串字符串转义符字符串的常用操作前言Go语言中有丰富的数据类型,除了基本的整型、浮点型、布尔型、字符串外,还有数组、切片、结构体、函数、map、通道(channel)等。Go语言的基本类型和其他语言大同小异。一、基本数据类型整型整型分为以下两个大类:按长度分为:int8、int16、int32、int64对应的无符号整型:uint8、uint16、uint32、uint64其中,uint8就是我们熟知的byte型,int1原创 2021-03-13 20:36:40 · 419 阅读 · 0 评论 -
从零开始了解Go语言开发
第一个Go程序Hello World现在我们来创建第一个Go项目——hello。在我们桌面创建一个hello目录。一、在该目录中创建一个main.go文件:package main // 声明 main 包,表明当前是一个可执行程序import "fmt" // 导入内置 fmt 包func main(){ // main函数,是程序执行的入口 fmt.Println("Hello World!") // 在终端打印 Hello World!}二、跨平台编译默认我们go b原创 2021-03-13 20:13:50 · 644 阅读 · 7 评论