![](https://img-blog.csdnimg.cn/5e40415fcb134496a5f52be9adbf835c.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
go语言学习
文章平均质量分 52
用于个人学习go语言的读书笔记,和看视频笔记
小王做笔记
这个作者很懒,什么都没留下…
展开
-
Go语言学习-- No.11结构体--匿名结构体的应用
匿名结构体的应用 会通过自定义匿名结构体将同一类的全局变量组织在一起会使用匿名结构体来临时存储经过解析后的JSON数据:匿名结构体一般可用于组织全局变量、构建数据模板和解析JSON等会通过自定义匿名结构体将同一类的全局变量组织在一起举例:package mainimport "fmt"func main() { // 匿名结构体用于组织全局变量 var config struct { ip string port int } config.ip = "192.168.1原创 2022-02-21 19:40:14 · 437 阅读 · 2 评论 -
Go语言学习-- No.12 结构体-- 匿名结构体的定义和初始化
匿名结构体的定义和初始化 匿名结构体的定义和初始化匿名结构体的定义和初始化匿名结构体无须type关键字就可以直接使用, 且不用写出类型名称。,匿名结构体在创建的同时也要创建对象。匿名结构体在初始化时需进行匿名结构体定义和成员变量初始化。举例:package mainimport "fmt"func main() { book1 := struct { // 无需事先声明 title string author string num int id in原创 2022-02-21 19:12:33 · 987 阅读 · 0 评论 -
Go语言学习-- No.11结构体--结构体内嵌
结构体内嵌 结构体内嵌结构体内嵌的初始化结构体内嵌Go语言的结构体内嵌是一种组合特性,使用结构体内嵌可构建一种面向对象编程思想中的继承关系。 结构体实例化后,可直接访问内嵌结构体的所有成员变量和方法。使用格式:type 结构体名1 struct { 成员变量1 类型1 成员变量2 类型2}type 结构体名2 struct { 结构体名1 成员变量3 类型3}举例:package mainimport "fmt"type Book struct {原创 2022-01-18 21:01:37 · 898 阅读 · 0 评论 -
Go语言学习-- No.11结构体--结构体方法
结构体方法 结构体方法指针类型接收者值类型接收者结构体方法一个方法就是一个包含了接收者的函数。对于结构体方法,接收者可以是结构体类型的值或是指针结构体 = 是通过 type 结构体名 struct 定义的结构体方法 = 函数结构体方法= 结构体名.函数()指针类型接收者当接收者类型为指针时,可以通过该方法改变该接收者的成员变量值,即使你使用了非指针类型实例调用该函数,也可以改变实例对应的成员变量值举例:package mainimport "fmt"type User struc原创 2022-01-18 20:22:00 · 855 阅读 · 0 评论 -
Go语言学习-- No.11结构体--初始化结构体
初始化结构体 键值对格式初始化列表格式初始化键值对格式初始化使用格式:type 结构名 struct { 成员变量 变量类型 ... , ]结构体实例名 := &结构名 { 成员名:初始化值, ... ,}举例:package mainimport "fmt"type Book struct { author, title string num, id int}func main() { book1 := &Book{ ti原创 2022-01-16 18:29:57 · 236 阅读 · 0 评论 -
Go语言学习-- No.11结构体--实例化结构体
实例化结构体 使用结构体的步骤标准实例化使用关键字 new() 完成初始化取地址实例化结构体访问成员使用结构体的步骤定义结构体 ( type struct {…} )实例化结构体 ( var 变量名 变量类型 )使用结构体( 使用 结构体名.成员 对其进行操作 )标准实例化格式:var 结构体实例 结构体 举例:package mainimport "fmt"type Book struct { title, author string num, id原创 2022-01-16 15:53:54 · 1097 阅读 · 0 评论 -
Go语言学习-- No.11结构体--结构体的理解和定义
结构体的理解和定义 结构体的理解结构体的定义结构体的理解自定义一系列由相同类型或不同类型的数据构成的数据集合,用来实现较复杂的数据结构。结构体是一种对现实生活中实体的抽象,结构体由一系列成员变量构成,这些成员变量对应着实体不同的属性。结构体的定义结构体定义需要使用type和struct关键字,使用方法如下:type 结构体名 struct { 成员变量1 类型a 成员变量2 类型b 成员变量3 类型c ....}注意点:结构体名:同一个包内结构体名不能重复。成员名:同一个结原创 2022-01-16 14:51:45 · 414 阅读 · 0 评论 -
Go语言学习-- No.10 -- 函数---Go内置函数
内置函数 内置函数汇总appendcopydeletelencapmakenewcomplex, real, imagclosepanicrecoverprintprintln内置函数汇总append使用格式:新变量 := append(原变量, element1, element2, 等) 新变量 := append(原变量, 数组...) 将数据追加到 slice 的末尾,返回一个 slice。举例:package mainimport "fmt"func main()原创 2022-01-16 11:20:47 · 533 阅读 · 0 评论 -
Go语言学习-- No.10 函数---函数参数传递的本质
函数参数传递的本质 值传递引用传递Go语言参数的传递形式总是值传递值类型变量引用类型变量值传递值传递: 将变量的一个副本传递给函数,函数中不管如何操作该变量副本,都不会改变原变量的值。引用传递引用传递:将变量的内存地址传递给函数,函数中操作变量时会找到保存在该地址的变量,对其进行操作,会改变原变量的值Go语言参数的传递形式总是值传递值类型变量对于int、string和bool等值类型变量,传递的是原变量的副本,对副本的操作不会影响原变量。举例:package mainimport "f原创 2022-01-14 19:00:47 · 200 阅读 · 0 评论 -
Go语言学习-- No.10 -- 函数----defer延时函数
defer延时函数的使用 defer使用方法使用defer用来释放资源defer使用方法defer 任意语句在defer所属的函数即将返回时,函数体中的所有defer语句将会按出现的顺序被逆序执行,即函数体中的最后一个defer语句最先被执行。举例:package mainimport "fmt"func main() { fmt.Println("start now!") defer fmt.Println("第一个defer") defer fmt.Println("第二个de原创 2022-01-14 13:28:59 · 194 阅读 · 0 评论 -
LeetCodeClassification ---- No.1 分治 --- 快速排序( 递归 )
分治的使用方法 : 快速排序 快速排序pythongo思考向数组中添加元素拼接多个数组快速排序基准条件:只有一个值或者数组为空,不需要快速排序了。递归条件左边放小于基准值的数组,然后对其进行快速排序 (使用递归实现)右边放大于基准值的数组,然后对其进行快速排序 (使用递归实现)合将快排的数组按照从左到有排起来,实现数组的从小到大排序。python# 快速排序 def quickSort(arr): if len(arr) < 2: r原创 2022-01-11 20:33:09 · 386 阅读 · 1 评论 -
Go语言学习-- No.10 通过定义函数求数组的和,数组中元素个数,数组中的最大值
练习题本次是对之前看完的部分,进行实战,写写代码,练习练习每个任务都使用了两种方法完成求解(递归法,for循环)package mainimport "fmt"func sum(arr []int) int { if len(arr) == 0 { return 0 } else { return arr[0] + sum(arr[1:]) }}func for_sum(arr []int) int { sum_output := 0 for i := 0; i &原创 2022-01-11 15:34:30 · 399 阅读 · 0 评论 -
win10系统下,vscode运行Golang程序很慢,好久没有输出结果
Golang 运行速度慢的问题 解决办法:解决办法:关闭杀毒软件 (首先尝试)设置 gopoxy代理:具体的设置如下:设置环境变量: 变量名 GOPROXY,变量值:https://mirrors.aliyun.com/goproxy/关闭 vscode 之后,重新打开程序,然后运行。如果还是很慢,连结果都不出的话,重新检查程序,看看程序的循环是不是有问题,或者是程序本身就没有输出。...原创 2022-01-08 20:49:01 · 2312 阅读 · 0 评论 -
Go语言学习-- No.10 函数 --- 匿名函数和闭包
匿名函数和闭包 匿名函数1. 定义并同时调用匿名函数2. 将匿名函数赋值给变量。闭包匿名函数即在需要函数时定义函数,匿名函数能以变量方式传递,它常常被用于实现闭包。匿名函数定义格式:func (参数列表) (返回参数列表) { 函数体}1. 定义并同时调用匿名函数举例:该例子相当于先定义了一个函数,这个函数后面直接对形参进行赋值操作,完成函数的使用。需要时候定义的函数。函数后面紧跟着实例化的形参变量。package mainimport "fmt"func main原创 2022-01-06 10:49:19 · 435 阅读 · 0 评论 -
Go语言学习-- No.10 函数 ---- 可变参数和多个函数共同使用
可变参数和多个函数共同使用 可变参数的传递传递可变参数本身可变参数本质上是一个切片,如果要在多个函数中传递可变参数,可在传递时添加“…”可变参数的传递某个拥有可变参数的函数a在另一个函数b中的使用,需要用 … 代替a中写上的参数。举例:package mainimport "fmt"func addall(slice ...int) { sum := 0 for _, value := range slice { sum = sum + value } fmt.Println(原创 2022-01-05 20:38:00 · 320 阅读 · 0 评论 -
Go语言学习-- No.10 函数 ---- 函数中的可变参数
函数中的可变参数 可变参数的函数格式可变参数的函数格式函数声明时可以没有固定数量的参数。func 函数名 (固定参数列表,v ...T ) (返回参数列表) { 函数体}或者 func 函数名 (固定参数列表, slice ... 类型)(返回值类型){ 函数流程 }可变参数一般放在函数参数列表的末尾,也可不存在固定参数列表。“v …T”代表的其实就是变量v为T类型的切片,v和T之间为三个“.”。举例:package mainimport "fmt"func原创 2022-01-05 20:27:48 · 380 阅读 · 0 评论 -
Go语言学习-- No.10 函数 ---- 形参,实参和函数的使用方法及调用
函数声明函数自变量为同类型可以合并类型只有输出没有输入的函数声明函数变量的使用总结Go语言函数支持的特性包括:◇ 参数数量不固定(可变参数)。◇ 匿名函数及其闭包。◇ 函数本身作为值传递。◇ 函数的延迟执行。◇ 把函数作为接口调用声明函数声明的格式:func 函数名(参数列表) (返回参数列表){ 函数体}可读形式 :func 函数名(参数1 类型1, 参数2 类型2, 参数n 类型n) (返回值a 类型a, 返回值b 类型b){ 函数流程}具体的使用方法 :举例1原创 2022-01-04 10:08:24 · 778 阅读 · 0 评论 -
Go语言学习-- No.9 内置容器(数组、切片和映射)------映射
映射映射是什么?声明格式声明空映射并使用 make 函数完成初始化设置遍历映射使用 delete 删除映射中的 键值对映射总结映射是什么?映射(map)是一种无序的键值对的集合,map的键类似于索引,指向数据的值。其返回的结果类似于 python中的字典 。 功能性也和python中的 map() 函数类似,是完成对变量的另一种表述 。声明格式变量名 := map [键类型]值类型{key : value, ...} 或者var 变量名 map [键类型]值类型{key : value, ...原创 2022-01-03 15:48:40 · 515 阅读 · 0 评论 -
Go语言学习-- No.9 内置容器(数组、切片和映射)------切片
内置容器(切片)切片声明切片的方法从数组中生成切片初始化切片直接声明切片并进行make初始化操作为切片添加元素对切片的操作也会影响产生它的数组随之进行变化通过切片删除元素遍历切片切片切片(slice)表示多个同类型元素的连续集合,但是切片本身并不存储任何元素,而只是对现有数组的引用。切片结构包括:地址、长度和容量。切片主要有三种生成方式:从数组生成一个新的切片;从切片生成一个新的切片;直接生成一个新的切片。这里的切片类似于 python中的切片的概念 ,使用格式为声明切片的方法1.原创 2022-01-03 11:31:37 · 422 阅读 · 0 评论 -
Go语言学习-- No.9 内置容器(数组、切片和映射)----数组
内置容器(数组、切片和映射)数组数组声明:初始化数组range()修改数组中的元素定义多维数组切片映射数组数组是具有相同类型且长度固定的一组数据项序列, 数组在使用前需先声明,声明时必须指定数组的大小且数组大小之后不可再变!!数组声明:var 数组变量名 [数组长度]元素类型举例:package mainimport "fmt"func main() { var arr [3]int fmt.Println(arr)}初始化数组var 数组变量名 = [数组长度]元素类型{原创 2022-01-03 11:09:54 · 396 阅读 · 0 评论 -
Go语言学习--No.8 循环嵌套的应用
循环嵌套的应用语法格式应用斐波那契数列M1:循环实现M2:递归实现金字塔结构语法格式 for 初始值; 条件判断为ture才继续执行; 赋值表达式 { 循环体1 for 初始值; 条件判断为ture才继续执行; 赋值表达式 { 循环体2 } }应用斐波那契数列是这样一个数列:1、1、2、3、5、8、13、21、34……这个数列从第三项开始,每一项都等于前两项之和。编写一个斐波那契数列的程序,输入第n项,程序输出对应第n项的值。其中我们可以总结出,该数列的数学表达为在原创 2022-01-02 10:29:39 · 341 阅读 · 0 评论 -
Go语言学习--No.7 流程控制
流程控制流程控制语句的介绍和分类条件判断语句ifswitch case循环控制语句for (只有 for )for + breakbreak语句如果不带标签,则默认跳出**最内层**的for循环。**带标签的break语句,直接跳出最外层的for循环**for + continue循环体的嵌套goto语句用于代码间的无条件跳转 (不推荐使用)流程控制语句的介绍和分类通过流程控制语句来控制程序的逻辑走向和执行次序。流程控制语句主要包括:条件判断语句(if和switch)、循环控制语句(for、break原创 2022-01-01 20:43:40 · 198 阅读 · 0 评论 -
Go语言学习--No.6 Golang中的运算符
Golang中的运算符算术运算符比较运算符赋值运算符位运算符逻辑运算符其他运算符说明,以下图片均来自于书籍《零基础入门Go语言-----零壹快学 GO 团队》,侵删算术运算符举例:package mainimport "fmt"func main() { a := 5 b := 2 fmt.Println("a / b = ", a/b) fmt.Println("a % b = ", a%b) a++ fmt.Println("a++ = ", a) b-- fmt.Pr原创 2022-01-01 09:50:55 · 655 阅读 · 0 评论 -
Go语言学习-- No.5 字符串的应用
字符串应用拼接方法1: 直接使用 + 号来进行截取方法 2 : 使用字节缓冲 bytes.Buffer.WriteString 的方式截取strings包的Index()方法会从头对字符串进行搜索,获得搜索内容所属下标,完成对字符串的截取strings包中还提供了LastIndex()方法来反向搜索字符串修改**Go语言无法对字符串直接进行修改,只能将字符串转换为字节数组后再进行操作。**格式化输出 Stringf(format, 变量1, ...)拼接方法1: 直接使用 + 号来进行截取Go语言的字原创 2021-12-31 13:39:38 · 215 阅读 · 0 评论 -
Go语言学习-- No4. Golang中的指针 p, ptr
Golang中的指针p, ptr指针是什么指针的声明取变量地址获取指针所指定的内容使用指针对数据进行修改指针的初始化操作指针是什么指针是一种地址值,这个地址值代表着计算机内存空间中的某个位置。举例,一栋大楼中的每个房间相当于计算机中的内存空间,指针是房间的门牌号,我们可以通过指针找到某个房间。指针的声明var 变量名 *int一般情况下,我们将指针变量的类型声明为*int,变量名为“p”开头(指代“point”)的单词,如“p”或“ptr”package mainimport "fm原创 2021-12-31 11:26:40 · 714 阅读 · 0 评论 -
Go语言学习-- No.3 数据类型
数据类型数值数据类型 :整型1.1 有符号的整型 int8、int16、int32、int64。1.2 无符号的整型 uint8、uint16、uint32、uint64。注意: 有符号和无符号指的是有没有正负号,其中正号+ 可以省略 , 负号- 则不可以省略浮点型 float32和float64。字符串型 stringbool 类型 : true , falsepackage mainimport ( "fmt" "reflect")func main() {原创 2021-12-31 10:18:38 · 137 阅读 · 0 评论 -
Go语言中的变量交换
变量交换两个变量的交换 (互换两个变量)两个变量的交换 (互换两个变量)直接对两个变量进行复制互换package mainimport "fmt"func main() { a := 18 b := 7 fmt.Print("查看1\n") fmt.Println("a=", a) fmt.Println("b=", b) a, b = b, a fmt.Print("查看2\n") fmt.Println("a=", a) fmt.Println("b=", b)}//原创 2021-12-30 19:39:53 · 904 阅读 · 0 评论 -
Go语言中的fmt.Print, fmt.Printf, fmt.Println的区别和使用场景
Go语言中的fmt.Print, fmt.Printf, fmt.Println的区别和使用场景fmt 包的介绍fmt.Print === 原样输出fmt.Printf === 格式输出fmt.Println === 值 + 空格 输出fmt 包的介绍fmt = format,是一种格式化输出函数汇总包,用于格式化输出fmt.Print === 原样输出Print formats using the default formats for its operands and writes to原创 2021-12-30 19:19:19 · 3519 阅读 · 0 评论 -
Go语言基础入门-No.2 变量和常量
变量和常量变量1. var声明变量类型和设置变量的初始值 (可以是全局变量,也可以是局部变量)2. var() 批量声明变量的方法3. := 用于短变量声明 (用于函数内部==函数内的局部变量)4. _短下划线声明匿名变量 (可以多次使用)常量1. const声明常量2. 常量计数器 iota --- 只能出现在常量中变量1. var声明变量类型和设置变量的初始值 (可以是全局变量,也可以是局部变量)var 声明变量的格式var 变量名 变量类型 =变量初始值 // 指定类型和初始值 或者v原创 2021-12-28 14:09:29 · 193 阅读 · 0 评论 -
Go语言学习记录--No1.代码结构和基本语法
Go代码结构和基本语法代码举例(打印hello)执行go程序1. 终端输入: go run xxx.go2. bulid + xxx.go3. 直接是使用 vs code 中的run code完成xxx.go程序的执行go fmt xxx.go 完成对go语言进行格式话处理,统一缩进方式编译器中的 保存键(ctrl + s) 一般是可以自动完成 go fmt xxx.go 方法的代码举例(打印hello)package main // 声明我们写的是什么包(包名),举例:self_pandas包原创 2021-12-27 21:25:26 · 693 阅读 · 0 评论