
Golang
文章平均质量分 80
学习 Go语言之旅
再坚持一下嘤
这个作者很懒,什么都没留下…
展开
-
【Go】运行main之前原来还做了这么多?(func init、var、const)
为了掌握项目,打算从main开始一点点挖,在main打了断点,但是在运行时发现,断点还未断到,程序就已经执行了很多,那这些执行的代码从何而来呢?在 Go 程序中,main 函数是程序的入口点,但在 main 函数执行之前,Go 会执行一系列初始化步骤。初始化顺序:const 常量 -> var 全局变量 -> func init()最终定位发现执行的代码处于。原创 2024-12-04 11:00:57 · 832 阅读 · 0 评论 -
【极客兔兔-Web框架Gee详解】Day2 上下文Context
相比第一天的代码,这个方法也有细微的调整,在调用 router.handle 之前,构造了一个 Context 对象。将和路由相关的方法和结构提取了出来,放到了一个新的文件中router.go,方便我们下一次对 router 的功能进行增强,例如提供动态路由的支持。router 的 handle 方法作了一个细微的调整,即 handler 的参数,变成了 Context。路由的处理函数,以及将要实现的中间件,参数都统一使用 Context 实例, Context 就像一次会话的百宝箱,可以找到任何东西。原创 2024-11-06 18:33:28 · 230 阅读 · 0 评论 -
【极客兔兔-Web框架Gee详解】Day1环境搭建与前置知识
在HTTP协议中,请求头(Request Headers)是客户端发送给服务器的附加信息,用于提供关于客户端环境、请求的细节以及客户端期望的响应格式等信息。Go Modules(Go):如果是Go 1.11及以后,推荐使用Go Modules,因为它提供了更现代化的依赖管理方式,支持版本控制,并且不依赖于GOPATH的固定目录结构。这个程序的功能是启动一个简单的HTTP服务器,能够响应两个不同路径的请求,并在响应中输出请求的相关信息。接口的实例,所有的HTTP请求,就都交给了该实例处理了。原创 2024-11-05 17:26:34 · 118 阅读 · 0 评论 -
【Golang】踩坑记录:make()创建引用类型,初始值是不是nil!!
创建切片时的内存分配:使用创建切片时,会根据指定的容量分配底层数组的内存。即使容量为 0,make仍然会创建一个切片结构,但底层数组的内存不会被分配,因为没有元素需要存储。发散问题“容量为 0,make 仍然会创建一个切片结构,只是没有分配底层数组的内存。”意思是 切片指向数组的指针为nil?\qquad在Go中,当你使用创建一个切片时,切片的内部结构确实被初始化,但它的底层数组指针并不是nil。相反,它指向一个特殊的、零长度的数组。具体来说:切片的长度和容量都是 0。原创 2024-10-17 12:00:29 · 1209 阅读 · 0 评论 -
【Go高性能】测试(单元测试、基准测试)
要想改进程序的性能,首先要知道程序的当前性能。benchmark 是 go 语言中用于测试基准性能的工具。该工具用于测试被测试函数的平均运行耗时、内存分配次数。主要适用于在已知性能瓶颈在哪里时的场景。通过对相同功能函数的不同实现的性能指标(平均运行耗时、平均内存分配次数)进行比较,以判断性能的优劣。原创 2024-08-29 16:10:17 · 1703 阅读 · 0 评论 -
【Go函数详解】三、匿名函数和闭包
匿名函数时一种没有指定函数名的函数声明方式(与之相对的,有名字的函数被称为具名函数),在很多编程语言中都有实现和支持。// 1、将匿名函数赋值给变量// 调用匿名函数 add// 2、定义时直接调用匿名函数} (1, 2)为什么可以将匿名函数赋值给一个普通变量呢?以下解析。原创 2024-08-27 18:18:00 · 1225 阅读 · 0 评论 -
【Go函数详解】二、参数传递、变长参数与多返回值
在参数类型前加上...前缀,就可以将该参数声明为变长参数。原创 2024-08-26 14:42:54 · 1056 阅读 · 0 评论 -
【Go函数详解】一、函数入门
Go 普通函数的基本组成包括:关键字func、函数名、参数列表、返回值、函数体和返回语句。func 函数名(参数列表)返回值{函数体返回语句return Sum若函数的参数列表中包含若干个类型相同的参数,则可以在参数列表中省略前面变量的类型声明,只保留最后一个。即定义在同一个目录下的go文件中,只需要直接调用如果是在不同包中,需要先导入该函数所在的包,然后才能调用该函数。在调用其他包 定义的函数时,只有函数名首字母大写的函数才能被访问。原创 2024-08-22 21:24:23 · 245 阅读 · 0 评论 -
【反射机制】深入理解Go语言反射机制,全方位解析
反射(Reflection)在编程中通常被定义为在运行时检查程序的能力。这种能力使得一个程序能够操纵像变量、数据结构、方法和类型这样的对象的各种属性和行为。这一机制在Go中主要通过reflect标准库实现。原创 2024-08-21 21:51:15 · 1528 阅读 · 0 评论 -
【代码块】Goland代码快{}解析
在 Go 语言中,花括号 {} 通常用于定义代码块。代码块可以用在多种场景中,例如函数体、循环体、条件语句等。2. 变量作用域:在某些情况下,花括号可以用来限制变量的作用域,使得在这个代码块中定义的变量在代码块外部不可见。1. 代码分组:将相关的代码逻辑分组在一起,使代码更具可读性和组织性。原创 2024-07-31 09:58:07 · 187 阅读 · 0 评论 -
3. 并发
goroutine是由Go运行时管理的轻量级线程会启动一个新的go协程并执行f(x, y, z)f, x, y和z的求值发生在当前的go协程中,而f的执行发生在新的go协程中。go协程在相同的地址空间中运行,因此在访问共享的内存时必须进行同步。sync包提供了这种能力,不过在Go中并不常用。原创 2024-07-23 21:52:14 · 812 阅读 · 0 评论 -
2.1 常用接口、error
fmt包中定义的Stringer是最普遍的接口之一。Stringer是一个可以用字符串描述自己的类型。fmt包都通过此接口来打印值。原创 2024-07-23 20:54:07 · 453 阅读 · 0 评论 -
2. 方法和接口
包含了方法和接口,这种构造可以用来定义对象及其行为。原创 2024-07-23 17:57:26 · 1340 阅读 · 0 评论 -
1.3 基础:指针、结构体、切片、映射
更多类型:指针、结构体、切片和映射学习如何基于现有类型定义新的类型:本节课涵盖了结构体、数组、切片和映射。原创 2024-05-30 21:55:18 · 1387 阅读 · 0 评论 -
1.2 基础:流程控制语句
流程控制语句:for、if、else、switch 和 defer学习如何使用条件、循环、分支和推迟语句来控制代码的流程。原创 2024-05-29 15:31:52 · 672 阅读 · 0 评论 -
1.1基础:包、变量、函数
每个Go程序都由包构成,程序从main包开始运行,使用圆括号将导入的包分为一组。在Go中,如果一个变量名字以大写字母开头,那么它可以直接由包名导出,其他的变量在该包外均无法访问。原创 2024-05-29 09:34:10 · 1382 阅读 · 0 评论 -
0. Windows安装Golang
Golang一直到1.10,都是使用GOPATH设置模块搜索路径,但从1.11开始,引入了新的Go模块管理机制(go modules),本节安装适用于1.10后的版本。原创 2024-07-20 16:30:39 · 1279 阅读 · 0 评论