Golang
文章平均质量分 50
记录我的Golang学习生涯
ZzzWClock
有规划的人生叫蓝图,没有规划的人生叫拼图
展开
-
Golang:go静态文件处理
golang静态文件处理原创 2022-07-18 21:14:19 · 882 阅读 · 0 评论 -
Golang:go模版引擎的使用
golang模版引擎,template包(html/template)实现了数据驱动的模板原创 2022-07-18 20:42:09 · 778 阅读 · 0 评论 -
Golang:go获取url和表单属性值
golang获取url和表单属性值原创 2022-07-18 16:24:40 · 1314 阅读 · 0 评论 -
Golang:go开启web服务
golang开启web服务需要用到net/http包需要用到的函数有handle,函数必须要有http.ResoponseWriter,*http.Reuqest需要用到的方法有http.HandleFunc,http.ListenAndServer。原创 2022-07-18 12:02:11 · 820 阅读 · 0 评论 -
Golang:go连接和使用mysql
Golang连接和使用mysql。原创 2022-07-17 23:18:22 · 791 阅读 · 0 评论 -
MYSQL:使用锁解决并发下的更新丢失问题
MYSQL使用锁解决并发下的更新丢失问题序言更新丢失是指并发下两次更新同时进行,后一次更新覆盖了前一次更新的情况,更新丢失是数据没有保证一致性导致的。举个栗子:用户A在银行卡有100元钱,某一刻用户B向A转账50元(称为B操作),同时有用户C向A转账50元(称为C操作);B操作从数据库中读取他此时的余额100,计算新的余额为100+50=150C操作也从数据库中读取他此时的余额100,计算新的余额为100+50=150B操作将balance=150写入数据库,之后C操作也将balance=1转载 2022-01-26 15:27:12 · 379 阅读 · 0 评论 -
Golang:channel管道与goroutine协程
channel管道与goroutine协程一.goroutine协程一.概述Go协程的特点有独立的栈空间共享程序堆空间调度是由程序员(用户)控制协程是轻量级的线程在go语言中,有一种模式叫做MPG,M表示内核线程,也可以称为一个工作线程,P代表执行一个go代码片段的基础(上下文环境),G表示协程,一个线程可以有多个协程。在go语言中可以轻轻松松的启动上万个协程,换做别的语言就不行,这也是go语言的一个特点多线程程序在单核上运行叫做并发多线程程序在多核上运行叫做并行主函数执行并原创 2022-01-17 11:49:22 · 305 阅读 · 2 评论 -
Golang:Golang单元测试
Golang单元测试一.概述import “testing”testing 提供对 Go 包的自动化测试的支持。通过 go test 命令,能够自动执行如下形式的任何函数func TestXxx(*testing.T)其中 Xxx 可以是任何字母数字字符串(但第一个字母不能是 [a-z]),用于识别测试例程。要编写一个新的测试套件,需要创建一个名称以 _test.go 结尾的文件,该文件包含 TestXxx 函数,如上所述。 将该文件放在与被测试的包相同的包中。该文件将被排除在正常的程原创 2022-01-16 17:00:57 · 314 阅读 · 0 评论 -
Golang:Golang解析程序启动附带指令,Flag包
Golang解析程序启动附带指令,Flag包一.简介flag包实现了命令行参数的解析。常用到的就是flag.StringVar()和flag.IntVar在所有flag都注册之后,调用flag.Parse()来解析命令行参数写入注册的flag里。解析之后,flag的值可以直接使用。如果你使用的是flag自身,它们是指针;如果你绑定到了某个变量,它们是值。二.代码块package mainimport ( "flag" "fmt")func main() { var (原创 2022-01-15 16:53:36 · 505 阅读 · 0 评论 -
Golang:Golang文件操作
Golang文件操作一.文件操作1.关于文件操作需要使用到os包os.open 打开文件流 返回一个file指针file.close 关闭文件流读取文件是对文件的一个输入流写入文件是对文件的一个输出流二.实例1.打开一个文件流要记得用defer关闭一个文件流,否则会内存泄漏2.读取文件流内容读取文件内容,需要用到bufio包bufio.NewReader()(带缓冲区的方式打开,适合打开较大的文件)reader.ReadString()(读取文件)io原创 2022-01-14 21:58:54 · 665 阅读 · 0 评论 -
Golang:Golang面向对象编程/接口编程
Golang面向对象编程/接口编程一.Golang面向对象编程介绍众所周知在编程语言里,面向对象编程是创建一个对象,来模拟实际行为与属性,比如创建一个“人”的对象,那么“人”的身高,年龄,体重,就是这个对象的属性,如果这个对象想要跑步,打篮球,打羽毛球,学英语,那么这个就是对象的方法然而在golang里面并没有像其它编程语言一样有class类或者this指针还有new对象方法,只有一个struct结构体来模拟一个对象实例,当然在struct里面也有对象的三大特性,封装,继承,多态,只是与其它变成原创 2022-01-13 18:41:04 · 438 阅读 · 0 评论 -
Golang:Golang方法声明与使用
Golang方法声明与使用一.Golang方法介绍方法与函数区别函数可以直接用函数名称直接调用,而方法则需要变量+方法名调用方法在传递实例的时候最好传递地址,处理速度会比值传递要快函数在接收一个指针后,需要用到传统(*变量名)拿取指针值,而在方法中底成做了优化,可以直接用变量名拿去值不需要加*号方法在声明的时候需要绑定一个自定义类型如常用的struct,或者init,string,interface都可以在实现了String()方法后会改写默认打印结果二.方法的声明与使用方法的原创 2022-01-09 14:21:23 · 610 阅读 · 0 评论 -
Golang:Golang结构体声明与使用
Golang结构体一.struct结构体特征go中的结构体有点类似于其他编程语言中的对象go中的结构体可以用.语法访问里面的属性/字段go中的结构体别名和属性/字段首字母需大写否则别的包无法访问此结构体类似于private和publicgo中的结构体属性/字段重复赋值会覆盖之前的值go中的结构体是值类型,不是引用类型go中的结构体如果在使用json转义的情况下,想要发送给客户端的属性/字段不是大写必须加上tag标签如json:xxx属性/字段名二.struct结构体声明和使用结构体声原创 2022-01-08 17:19:09 · 2460 阅读 · 0 评论 -
Golang:Golang介绍map和声明map
Golang声明map一.map的介绍在声明map的时候是不会自动分配内存的,必须使用make进行内存分配map是[key]value结构map是无序的map的key可以是结构体,slice,int,string,channel但是百分之90都是使用int和stringmap的key不能使用func,mapmap的key是不可以重复的,但是value可以二.map的声明声明mapmap的key不能重复否则会覆盖之前值三.代码块package mainimport "fmt原创 2022-01-05 22:59:24 · 366 阅读 · 0 评论 -
Golang:Golang处理错误信息或自定义错误信息
Golang处理错误信息或自定义错误信息前言:在golang中,程序遇到错误后系统会抛出一个panic恐慌错误,会停止程序,中断程序执行,但是我们有的时候又不想程序错误后中断程序,那我们就要进行捕获错误信息并且处理一.Golang处理错误信息捕获错误信息会用到defer还有recover,接下来我们看代码在sub01函数中发生了错误导致接下来的代码不会继续执行,我们加上defer,recover解决此现象可以看到defer+recover捕获了错误信息,并且处理了错误信息,不会导致程序中断原创 2021-12-26 19:10:49 · 1199 阅读 · 0 评论 -
Golang:GO闭包函数与init函数与defer
GO闭包函数与init函数与defer一.init函数init函数是go语言中的初始化函数,优先级在main函数之上init函数经常用来初始化连接(关系型数据或者非关系型数据库)接下来我们看看init函数/优先级init案例1 代码片段package mainimport "fmt"func init() { fmt.Println("init()执行了~")}func main() { fmt.Println("main()执行了~")}// 以上输出// init(原创 2021-12-05 23:32:39 · 677 阅读 · 0 评论 -
Golang:Go指针特性,值类型和引用类型
Go指针go指针低层是指向一个内存地址 如下图所示下面是运用指针而改变值用&符号取得变量地址,用*符号取得地址值代码快package mainimport ( "fmt")func main () { // 指针 输出变量地址 var number int = 10 //number 地址是: 0xc000012070, 值是:10 fmt.Printf("number 地址是: %v, 值是:%v \n", &number, number)原创 2021-11-24 22:44:54 · 3896 阅读 · 0 评论 -
Golang:Go的特性
Go的特性特性1. 继承c语言特性,基础数据结构,指针等等2. 每个文件都是一个包,必须要用package进行声明3. 函数有多个返回值4. 并且支持天然并发 goroutine5. 拥有垃圾回收机制 内存自动回收 不需要开发人员管理6. 新增slice make map default(延迟 先进后出)7. 代码可以进行格式化程序编写规则1. go文件后缀必须是 .go结尾2. go在声明了变量或者引入了包必须要使用3. go程序区分大小写4. go程序代码结尾不用加;分号原创 2021-11-21 16:26:28 · 3859 阅读 · 0 评论 -
Golang:fmt包Scanln在控制台获取用户输入的值
一.fmt.Scanln在控制台获取用户输入的值代码块 package mainimport "fmt"func main() { // 在控制台录入数据 Scanln var name string // 姓名 fmt.Println("请输入姓名") fmt.Scanln(&name) var age int // 年龄 fmt.Println("请输入年龄") fmt.Scanln(&age) var height float32 // 身高原创 2021-10-29 23:49:35 · 679 阅读 · 0 评论 -
Golang:Go的数组声明/数组切片
一. 数组Array数组:是同一种数据类型的固定长度的序列。数组定义:var a [len]int,比如:var a [5]int,数组长度必须是常量,且是类型的组成部分。一旦定义,长度不能变。长度是数组类型的一部分,因此,var a[5] int和var a[10]int是不同的类型。数组可以通过下标进行访问,下标是从0开始,最后一个元素下标是:len-1for i := 0; i < len(a); i++ {}for index, v := range a {}访问越界,如果原创 2021-10-26 18:07:57 · 1234 阅读 · 0 评论 -
Golang:Go的变量声明,字符类型
一.变量的字符类型常用的基本类型说明bool布尔值int整型folat浮点型字符串二.变量的声明 大家可以看到变量声明和php大不一样,`go语言`变量声明用的是`var`声明变量,而`PHP`用的是`$`符号声明变量,然后在go语言单中声明了变量必须要使用,不使用会抛出异常错误,在声明变量之后可以进行对变量声明type状态,如果不声明状态则默认为以下 可以看见,`整型默认值为int`,`folat默认值为folat64`,这里需要注意一下,原创 2021-10-25 23:53:41 · 145 阅读 · 0 评论 -
Golang:安装本地环境,运行hello world
一.安装本地环境进入golang社区 下载本地安装包https://studygolang.com/dl根据自己电脑系统进行下载安装更改go env 文件,开启 module,更换镜像源go env -w GO111MODULE=ongo env -w GOPROXY=https://goproxy.cn安装vs code 或 goland 编辑器二.创建go文件 xxx.gogo 代码块package mainimport "fmt"func main()原创 2021-10-24 17:34:37 · 1903 阅读 · 0 评论