
Golang
文章平均质量分 96
Golang
2021dragon
越努力越幸运
展开
-
Go Module详解
Go Module是Go语言的官方依赖管理解决方案,其提供了一种简单、可靠的方式来管理项目的依赖关系。Go Module于Go1.11发布,并于Go1.14准备正式用于生产,Go官方也鼓励用户从其他的依赖管理工具迁移到Go Module。依赖管理:在引入Go Module之前,Go语言没有官方的依赖管理系统,开发人员需要手动下载和管理项目的依赖包。Go Module中提供了一种标准化的依赖管理解决方案,使开发人员能够轻松定义、下载和更新项目的依赖项。原创 2024-06-14 10:52:25 · 4798 阅读 · 28 评论 -
Golang Context详解
在Go 1.7版本中引入了上下文(context)包,用于在并发编程中管理请求范围的数据、控制生命周期、处理取消信号和超时等。context在Go中具有重要的作用,特别是在并发编程和网络编程中,因此context通常会作为各个函数和方法的首个入参。原创 2024-06-10 20:15:24 · 3199 阅读 · 23 评论 -
Golang TCP网络编程
网络编程是指通过计算机网络实现程序间通信的一种编程技术,涉及到在不同计算机之间建立连接、传输数据和协议解析等操作。套接字(Socket)编程是网络编程的一种实现方式,其提供了一种机制,使得应用程序能够通过网络进行数据传输和通信。Go中的net包是标准库中提供的网络编程包,是基于套接字编程的一种实现方式,提供了对TCP、UDP、IP、ICMP、Unix域套接字等常见网络协议的支持,通过net包可以完成创建套接字、建立连接、发送和接收数据等操作,实现网络通信。原创 2024-06-03 21:13:41 · 3506 阅读 · 28 评论 -
Golang反射
在Go中,反射(reflection)是一种机制,其允许程序在运行时检查并操作变量、类型和结构的信息,而不需要提前知道它们的具体定义,使得代码更加灵活和通用。反射通常用于动态获取获取类型信息、动态创建对象、动态调用函数、动态修改对象等,在实现反射时需要用到reflect包。需要注意的是,虽然反射的功能强大,但由于其使用了运行时的类型检查和动态调用,在性能上可能会有一定的开销,因此在性能敏感的场景中,应该尽量避免过度依赖反射来实现常规的编程任务。原创 2024-05-31 20:05:40 · 2434 阅读 · 23 评论 -
Golang协程和通道
协程(Coroutine)协程是一种轻量级的并发执行单元,通常由编程语言本身的运行时系统进行调度和管理。协程通常在一个线程内执行,共享相同的地址空间和资源。协程间通常通过通道(Channel)实现数据交换和协作。协程的创建、销毁以及切换都由运行时系统自动完成,开销非常小,可以创建成千上万个协程而不会导致系统负载过高。原创 2024-05-28 22:19:43 · 2670 阅读 · 21 评论 -
Golang单元测试
代码测试是软件开发中的一项重要实践,用于验证代码的正确性、可靠性和预期行为。通过代码测试,开发者可以发现和修复潜在的错误、确保代码按预期工作,并提高系统的质量和稳定性。单元测试是针对代码中最小的可测试单元(如函数、方法或类)进行的测试,以验证代码单元在给定输入下的行为是否正确。单元测试通常由开发者编写,并使用特定的测试框架和断言库来定义测试用例、执行测试代码,并验证测试结果。例如,现在要求对cal.go文件中的函数进行代码测试。原创 2024-05-25 22:03:10 · 2124 阅读 · 19 评论 -
Golang文件操作
文件操作是指对计算机文件进行读取、写入、修改、删除和移动等操作的过程,它可以用于读取配置文件、存储日志、处理用户上传的文件等,Go中主要通过os和bufio包提供文件操作功能。文件在程序中是以流的形式进行操作的,我们把数据在数据源(文件)和程序(内存)之间经历的路径叫做流。其中数据从数据源到程序的路径叫做输入流,数据从程序到数据源的路径叫做输出流。基本介绍命令行参数是在运行程序时通过命令行传递给程序的参数,在Go中可以使用os包的Args变量来访问命令行参数。原创 2024-05-22 14:02:44 · 2266 阅读 · 18 评论 -
Golang面向对象编程(三)
在Go中,接口(interface)是一种用于定义方法集合的抽象类型,接口中定义了一组方法的签名,而不包含方法的实现细节,其他类型可以通过实现接口中定义的方法来满足接口的要求。接口的实现是隐式的,类型不需要显式声明它实现了某个接口,只要类型提供了接口中定义的所有方法,就被视为实现了该接口。接口提供了一种灵活的方式来定义和使用抽象的行为,通过接口可以实现与类型无关的编程,提高代码的灵活性和可扩展性。接口的定义方式接口中定义的都是方法的签名,没有方法体,也不能有任何变量。原创 2024-05-16 15:33:43 · 1268 阅读 · 24 评论 -
Golang面向对象编程(二)
封装(Encapsulation)是面向对象编程(OOP)中的一种重要概念,封装通过将数据和相关的方法组合在一起,形成一个称为类的抽象数据类型,只暴露必要的接口供外部使用。封装可以隐藏数据的实际实现细节,外部只能通过公共(public)接口来访问和修改数据,使得代码更加模块化和结构化,同时可以防止不恰当的访问和操作,提高数据的安全性。封装将相关的数据和方法组织在一起,形成了一个独立的单元,外部使用者只需关心公共接口,无需了解内部实现细节,简化了使用方式,提高了代码的可读性和可维护性。原创 2024-05-13 20:18:13 · 1365 阅读 · 21 评论 -
Golang面向对象编程(一)
Go支持面向对象编程特性,包括封装、继承和多态,但Go中没有类(class)而是基于结构体(struct)来实现OOP特性的。结构体是一种聚合的数据类型,是由零个或多个任意类型的值聚合成的实体,结构体中的成员称为结构体的字段。在编程过程中,通常将一类事物的特性提取出来,形成一个结构体类型,然后基于这个结构体类型创建出多个实例。结构体定义方式Go中结构体定义的基本语法如下:// 定义结构体Age int结构体是值类型,不同结构体变量的字段是独立的,互不影响。原创 2024-05-10 22:00:05 · 2025 阅读 · 26 评论 -
Golang Map类型
在Go中,map是哈希表的引用,是一种key-value数据结构。map类型写作map[K]V,其中K和V分别对应key和value的类型。map中所有的key都是相同的类型,所有的value也是相同的类型,但key和value可以是不同的类型,value通常使用自定义类型。map内部需要通过判断两个key是否相等以确保每个键的唯一性,因此key的数据类型必须是可比较,如果key是自定义类型,则要求自定义类型中的所有字段是可比较的。原创 2024-05-07 20:10:40 · 1840 阅读 · 21 评论 -
Golang数组与切片
在Go中,数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成。长度是数组类型的一部分,数组声明后长度不能动态变化,只有数组元素类型相同并且数组长度相同,才算同一种数组类型。数组创建后,如果没有对数组元素进行赋值,则保留对应元素类型的默认值(数值类型为0,string类型为"",bool类型为false,引用类型为nil)。数组的定义方式指明数组长度和元素类型,数组元素采用对应的默认值。指明数组长度和元素类型,并初始化数组元素。原创 2024-05-04 17:02:34 · 1889 阅读 · 24 评论 -
Golang错误处理机制
Go的类型系统会在编译时捕获很多错误,但有些错误只能在运行时检查,比如除零错误、数组访问越界、空指针引用等,这些运行时错误会引起panic异常。当panic异常发生时,程序会中断运行,并立即执行当前函数中的defer语句,然后程序会从调用栈中逐级返回,返回同时执行各级函数中的defer语句,直到panic被捕获或程序终止。原创 2024-04-30 21:44:36 · 2095 阅读 · 28 评论 -
Golang函数和包
运行程序后可以看到,按照main包中的导入顺序先后对db包和utils包进行了初始化,然后再对main包进行了初始化,每个包在初始化过程中先对全局变量进行了初始化,然后再调用了init函数,在所有包初始化完毕后开始执行main函数的代码逻辑。例如,下面在Go项目中创建了db、utils、main三个目录,分别用于存放db包、utils包和main包的go文件代码,并在main包中调用了db包和utils包中的函数。在Go中函数也是一种数据类型,可以将其赋值给一个变量,然后通过该变量即可对函数进行调用。原创 2024-04-27 16:49:03 · 1704 阅读 · 16 评论 -
Golang流程控制语句
在使用for range遍历string时,它会按照UTF-8编码格式解析字符串,并以Unicode字符作为迭代的单位,每次迭代都会返回字符串中的一个Unicode字符(rune)和对应的索引,无论是单字节的ASCII字符还是多字节的汉字,都会被正确地解析并返回。在执行完对应的case语句的代码块后,程序会直接退出switch控制,如果希望程序继续执行下一个case语句的代码块,可以在代码块的最后通过fallthough关键字实现switch穿透。在switch后声明的变量仅在switch语句中有效。原创 2024-04-24 20:40:33 · 1548 阅读 · 15 评论 -
Golang数据类型
Go中的每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间。具体来说,Go中的数据类型可分为基本数据类型和复杂数据类型。原创 2024-04-21 16:16:52 · 1620 阅读 · 12 评论 -
Golang入门基础
Go语言(又称Golang)是一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言,由罗伯特·格瑞史莫(Robert Griesemer)、罗布·派克(Rob Pike)及肯·汤普森(Ken Thompson)于2007年9月开始设计。原创 2024-04-18 22:55:40 · 2246 阅读 · 16 评论