golang GC机制经历了3个过程一、Go1.3版本的mark and sweep(标记、清除)        步骤:                1、锁住整个程序,即STW(
Golang中error错误处理浅谈一.error与类型错误的变量进行比较1.== 比较2.contains 比较二.断言底层结构类型,并从结构体字段获取更多信息三.断言底层类型的行为 在解析了 Golang中error和创建error的源码后( Golang学习——error和创建error源码解析)。 对error有了一定理解,不过error处理才是实际开发中非常重要的一点。Golang
上次聊到了《Go语言进阶之路(八):正则表达式》和《Go语言进阶之路:手撸一个LRU缓存》,这次利用正则表达式来编写一个并发爬虫。私信“空姐”获取本爬虫源码!说到爬虫,不得不提到前面写的《Python网络爬虫requests、bs4爬取空姐网图片》。这个爬虫很简洁,使用requests库发送http请求,使用bs4来解析html元素,获取所有图片地址。但是这个爬虫是单线程爬虫,速度太慢,一分钟只能
Golang根据不同的错误类型返回不同的错误信息
原创 2023-07-15 00:32:50
32阅读
1. 介绍函数:基本的代码块。定义如下:func funcname(argList) (retList) { //todo }函数签名:函数参数、返回值以及它们的类型被统称为函数签名。函数申明:申明一个在外部定义的函数,你只需要给出函数名与函数签名,不需要给出函数体,例如:func funcName(begin, end int)目的:(为什么要用多个函数)1. 分解复杂的代码(易读)2.
  函数函数是组织好的、可重复使用的、用于执行指定任务的代码块。函数是go语言中的“一等公民”。函数的定义与调用其实我们从开始就无时无刻在接触着函数--main函数。语法: func 函数名(参数)(返回值){ 函数体 }规则: 函数名:由字母、数字、下划线组成。但函数名的第一个字母不能是数字。在同一个包内,函数名也称不能重名。 参数:参数由参数变量和参数变量的类型组成,多个参
package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) //插入数据 func insertlab() { /* mysql连接三步: 1.打开连接 2.预处理sql 3.读取结果 4.关闭 */ //1.打开连接 dsn := `root:123456@
转载 2023-05-26 15:07:24
121阅读
Golang错误处理
原创 2024-06-11 16:18:51
17阅读
Go语言主要的设计准则是:简洁、明白,简洁是指语法和C类似,相当的简单,明白是指任何语句都是很明显的,不含有任何隐含的东西,在错误处理方案的设计中也贯彻了这一思想。我们知道在C语言里面是通过返回-1或者NULL之类的信息来表示错误,但是对于使用者来说,不查看相应的API说明文档,根本搞不清楚这个返回值究竟代表什么意思,比如:返回0是成功,还是失败,而Go定义了一个叫做error的类型,来显式表达错误。在使用时,通过把返回的error变量与nil的比较,来判定操作是否成功。例如os.Open函数在打开文件失败
原创 2021-06-01 12:28:22
485阅读
1. 错误 错误用内建的error类型来表示。 type error interface { Error() string } error 有了一个签名为 Error() string 的方法。所有实现该接口的类型都可以当作一个错误类型。Error()方法给出了错误的描述。 package main
转载 2019-07-03 20:46:00
189阅读
2评论
go处理错误的另一种方式 go处理错误常见的方式是err := funcReturningError() if err != nil { // 处理错误 }然而因为过于繁琐而饱受诟病。下文简述另一种处理错误的写法。这种写法最初我是从标准库里看到的,代码在 https://github.com/golang/go/blob/master/src/encoding/gob
* errno.gopackage errnoimport "fmt"type Errno struct { Code int Message string}func (err *Errno) Error() string { return err.Message}func (this *Errno) Add(msg string) *Errno { thi...
原创 2021-08-13 11:50:57
754阅读
# 实现 golang mysql 错误类型 ## 概述 本文将教会你如何在 golang 中处理 mysql 错误类型。我们将会使用 go-sql-driver/mysql 包来连接和操作 mysql 数据库。 ## 安装依赖 在开始之前,我们需要先安装 go-sql-driver/mysql 包。打开终端并执行以下命令: ```shell go get -u github.com/go-s
原创 2023-07-29 06:08:51
145阅读
目录 目录Tips函数定义,不定长变参,传递值类型与引用类型一切皆类型,包括函数匿名函数和闭包匿名函数闭包defer用法panic 与 recover,错误处理机制综合例子 TipsGo函数不支持 嵌套,重载 和 默认参数但支持以下特性: 无需声明原型,不定长度变参,多返回值,命名返回值参数,匿名函数,闭包定义函数使用关键字func,并且左大括号不能另起一行函数定义,不定长变参,传递值类型与引用类
转载 2024-02-21 12:16:30
80阅读
首先golang中协程golang是用户线程与系统线程的对应关系是多对多,既能利用多核cpu资源,也能尽可能减少上下文切换成本,代价是go需要实现复杂的goroutine调度机制。N:1,所有用户线程对应1个系统线程,无法利用多核cpu;1:1,1个用户线程对应一个系统线程,上下文切换成本高。调度逻辑 四个结构体M:Machine,操作系统线程。一个M被创建后会在P空闲队列中获取P进
介绍Golang 语言支持命名返回值。官方建议:直接返回语句应当仅用在下面这样的短函数中。在长的函数中它们会影响代码的可读性。而使用普通返回值时,使用 return 语句返回时,需要在其后面指定与普通返回值相同类型的参数名。命名返回值Go 的返回值可被命名,它们会被视作定义在函数顶部的变量。返回值的名称应当具有一定的意义,它可以作为文档使用。没有参数的 return 语句返回
字符串定义在golang中字符串是一种不可变的字节序列,它可以包含任意的数据,包括0值字节,但主要是人类可以阅读的文本。golang中默认字符串被解读为utf-8编码的Unicode码点(文字符号)序列。特性golang中字符串具有不可变性。例如str := "hello 世界!" str[0] = 'L'这种写法会引起编译错误:str[0] 不可赋值字符串支持类似数组中分片的引用写法:fmt.
转载 2024-02-22 10:41:32
13阅读
PHP与Golang:1、解释型语言相对编译型语言性能相对较差。当然我们可以借助opcode高速缓存去减低性能差异,另外opcode需要zend虚拟机,java也是有jvm虚拟机,在这方面一定程度可以说PHP是编译型。如果按照编译是生成二进制码来讲,golang才是编译型。这里有个关键的问题如果没有虚拟机如果实现跨平台??2、弱类型语言(PHP7有类型限制,array很强大,上述两个方面带来的好处
转载 2024-04-02 15:58:52
22阅读
事务概念事务是将批量增删改操作视为一个整体,作为一个整体,它们要么全部成功,要么全部失败——这一特性称为事务的原子性(原子是不可再分割的);事务的应用场景很多,例如在一次电商的交易中,只有资金出入表、物流表、交易记录表、订单表、购物车表等一系列表的数据变动全部严丝合缝分毫不差时,才能视为交易成功,此时可以提交事务;只要有一点对不上号的地方,本次交易就不能视为成功,所有的数据应全部回滚至交易之前的状
转载 2023-12-15 19:47:40
29阅读
什么是错误错误表示程序中出现了异常情况。比如当我们试图打开一个文件时,文件系统里却并没有这个文件。这就是异常情况,它用一个错误来表示。在 Go 中,错误一直是很常见的。错误用内建的 error 类型来表示。就像其他的内建类型(如 int、float64 等),错误值可以存储在变量里、作为函数的返回值等等。示例现在我们开始编写一个示例,该程序试图打开一个并不存在的文件。package main i
转载 2024-07-05 14:27:02
180阅读
  • 1
  • 2
  • 3
  • 4
  • 5