GO
文章平均质量分 93
好学且牛逼的马
28 软件工程在读
业余嵌入式玩家
非业余 后端开发
web3开发爱好者
你的go学长
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
GO实战项目:流量统计系统完整实现(Go+XORM+MySQL + 前端)
本文介绍了一个基于Go语言的流量统计系统,包含四大核心模块:1)模拟日志生成模块,使用Go协程批量生成包含IP、框架、UA等信息的模拟日志;2)日志解析消费模块,采用协程池和XORM框架批量解析并写入MySQL数据库;3)数据统计存储模块,通过定时任务执行SQL聚合,统计PV、框架分布和UA分布;4)前端可视化模块,使用ECharts实现数据可视化展示。系统采用Go协程实现高并发处理,通过XORM操作MySQL数据库,前端使用HTML+CSS+JS结合ECharts展示PV趋势图、框架/UA分布饼图等技术方原创 2025-09-20 22:19:08 · 1161 阅读 · 0 评论 -
GO实战项目:基于 `HTML/CSS/JS + Gin + Gorm + 文心一言API`AI 备忘录应用
先在 MySQL 中创建项目专用数据库ai_memo(后续 Gorm 会自动建表):打开 MySQL 终端(或用 Navicat、DataGrip 等工具):bash# 登录MySQL(输入密码时按回车,然后输入你的MySQL密码) mysql -u root -p创建数据库ai_memosql验证:输入,看到ai_memo即成功,然后输入exit;退出 MySQL。通过以上步骤,依次实现了任务删除AI 多轮交互到期提醒Excel 导出四大扩展功能。每个功能从后端路由前端页面JS 逻辑样式美化。原创 2025-09-20 08:46:55 · 910 阅读 · 0 评论 -
Go 语言`context`标准库深入讲解与示例
context`(上下文)是 Go 语言处理**goroutine 生命周期与元数据传递**的标准库,核心作用是在多个 goroutine 之间传递**取消信号**、**超时时间**和**请求范围的元数据**,实现并发控制与协作。- **泄漏原因**:goroutine 中的`for`循环是无限的,且无退出条件(`time.After`仅触发任务执行,不控制退出),`leakyFunc`返回后 goroutine 仍会持续运行,导致泄漏。`ok`为`true`表示有截止时间,可用于提前规划操作;原创 2025-09-20 08:43:28 · 814 阅读 · 0 评论 -
golang 14并发编程
基本语法:匿名函数写法:// 代码逻辑}()本质: sync包中的WaitGroup结构体,用于协程同步特点无需显式初始化即可使用内部维护计数器状态禁止在首次使用后复制(noCopy机制)通信模型: 两个goroutine(g1和g2)通过建立的通道传递数据工作方式: 发送方将数据放入通道,接收方从通道取出数据类型限制: 必须指定通道传输的数据类型(如string),不像动态语言可传任意类型声明方式: var msg chan string。原创 2025-09-01 09:05:53 · 673 阅读 · 0 评论 -
golang13 单元测试
重要性: 在实际生产级项目开发中非常重要,虽然初创项目可能不写,但当项目成为核心项目后都需要编写核心单元测试测试命令: 使用go test命令运行测试用例,该命令是按照约定组织的测试代码驱动程序定义函数并编写测试用例03:42文件命名: 测试文件必须以_test.go结尾,如add_test.go文件位置: 测试文件需要与被测试代码放在同一个包中,以便测试内部函数测试分类Test开头:功能测试Benchmark开头:性能测试Example开头:样本测试模糊测试:在高级阶段讲解。原创 2025-08-27 23:32:38 · 884 阅读 · 0 评论 -
golang 12 package 和 module
摘要该视频主要讲述了Go语言中的package概念和import关键字的使用方法。Go语言通过package来组织代码,类似于包的概念。每个源代码文件都会声明一个package,默认采用文件名作为名称。在同一个目录下不能定义两个不同名称的package,否则会导致编译错误。在定义了package之后,该package中的结构体、类型等都需要通过该package才能访问。因此,package是Go语言中代码组织和管理的重要概念,有助于提高代码的可读性和可维护性。此外,视频还介绍了import关键字的使用方法和原创 2025-08-27 23:31:42 · 1086 阅读 · 0 评论 -
golang11 接口
语法结构:使用type关键字定义接口,格式为type 接口名 interface{}命名规范:接口名通常使用驼峰命名法,如Duck接口空接口:当接口不包含任何方法时称为空接口,可以接收任何类型的值,如Go语言中的any类型就是空接口的别名关键特点接口定义和方法实现是松耦合的不需要显式声明实现了哪个接口方法签名必须完全匹配注意事项少实现一个方法会导致编译错误方法接收者类型影响赋值方式(值/指针)接口变量存储的是实现了接口的具体类型的值实际应用代码解耦的重要手段常用于定义抽象层。原创 2025-08-27 15:56:08 · 348 阅读 · 0 评论 -
golang 10指针
基本定义:type Person struct { name string }方法定义:func (pPerson) print()中Person表示指针接收器指针优势:当结构体较大时使用指针可避免复制开销,且能修改原结构体定义语法:var piPerson = &p,其中表示指针类型,&取地址打印指针:fmt.Printf("%p",pi)打印地址,fmt.Println(pi)打印指向的值访问方式:通过(*pi).name或直接pi.name访问字段(Go特有语法糖)原创 2025-08-27 11:39:28 · 799 阅读 · 0 评论 -
golang9 结构体
类比class: 结构体可类比其他语言的class,但比class更加轻量级用途: 用于组织多个字段的数据结构,是Go语言中重要的复合类型用途: 定义方法集合,用于实现多态行为特点: 接口类型将在后续章节详细讲解作为别名01:54语法: 使用type 新类型名 = 原类型格式本质: 编译时会被直接替换为原类型示例:用途提高代码可读性(如byte是uint8的别名)方便理解代码意图(如rune表示字符而非普通整数)作为类型定义05:35。原创 2025-08-27 09:16:36 · 393 阅读 · 0 评论 -
golang 8函数
关键字:Go语言使用func关键字定义函数,与其他语言不同一等公民特性函数可作为变量传递支持匿名函数和闭包函数可以满足接口多值返回:Go函数可返回多个值,如(int, error)本质:Go中所有参数传递都是值传递(拷贝)影响:函数内修改参数不影响原始变量函数参数拷贝机制:调用时参数值会被完整拷贝内存模型:形参和实参位于不同内存地址值传递示例09:47修改测试:函数内修改参数a=3不影响外部变量打印验证:外部打印变量保持原始值指针例外:通过指针可修改原始变量(后续讲解)原创 2025-08-26 20:48:50 · 307 阅读 · 0 评论 -
golang7 数组切片
类型特性:Go语言中数组是固定长度的集合类型,定义方式为类型严格性:[]string和是两种完全不同的类型,长度不同则类型不同语法结构:使用var 数组名行数元素类型定义,如var arr3string定义3行4列的字符串数组维度说明:第一个方括号表示行数,第二个方括号表示列数,与其他编程语言的多维数组定义方式一致内存布局:多维数组在内存中仍然是连续存储,按行优先顺序排列底层结构: 切片底层实际上是数组,但提供了动态数组的功能与数组区别数组长度固定,不能动态增减元素。原创 2025-08-26 15:22:53 · 461 阅读 · 0 评论 -
golang 基础类 八股文400题
Goroutine:Go 的轻量线程,由 Go runtime 管理(非 OS 线程),通过go 函数名()启动,开销小(初始栈 2KB,可动态扩容)。停止方式(无直接kill方法,需协作):通过channel发送退出信号: goroutine 监听通道,收到信号后退出。使用:通过创建可取消上下文,调用CancelFunc通知退出。共享变量标记:通过原子操作或锁控制布尔变量,goroutine 定期检查标记。定义:通道是 goroutine 间通信的管道,通过chan T。原创 2025-08-25 16:49:14 · 736 阅读 · 0 评论 -
golang1 专栏导学
转型需求:适合其他语言(特别是动态语言)转Go的开发者,课程充分考虑转型需求能力提升:帮助CRUD开发者突破框架限制,理解底层原理和开发规范技术深度:适合希望提升技术深度、专精特定领域的开发者工程化进阶:适合想要系统学习工程化实践、提升开发规范和管理能力的同学。原创 2025-08-24 17:17:46 · 644 阅读 · 0 评论 -
golang6 条件循环
设计理念: Go语言只提供for循环一种循环结构,不同于其他语言同时提供for和while循环替代方案: for循环通过灵活变通可以完全替代while循环的功能实践验证: 开发者使用经验表明这种设计不会造成实际编码困难Go 语言的if和forif支持初始化语句,可在条件判断前声明临时变量,简化代码并限制变量作用域for是唯一的循环语句,通过不同形式可实现普通循环、while循环和无限循环for range专为遍历集合设计,能优雅处理字符串、数组、切片、map 等循环控制可使用break(终止)、原创 2025-08-24 17:08:38 · 336 阅读 · 0 评论 -
golang3变量常量
变量:用于存储可变数据,支持多种声明方式(var:=等),有明确的作用域和类型,需显式转换。常量:用于存储不可变数据,必须在声明时初始化,值在编译期确定,iota简化了枚举序列的生成。理解两者的特性和使用规则,能帮助你编写更规范、高效的 Go 代码,尤其是iota的灵活运用和变量作用域的合理控制,是写出高质量 Go 程序的关键。原创 2025-08-24 17:07:49 · 752 阅读 · 0 评论 -
golang4 数据类型
Go 语言的类型判断机制(类型断言和类型分支)是处理接口类型的核心工具,主要用于:确定接口变量的实际类型根据不同类型执行差异化逻辑检查类型是否实现了特定接口使用时需注意:优先使用带ok的安全类型断言,避免 panic区分值类型和指针类型的断言复杂类型判断场景使用更清晰掌握类型判断是编写灵活、通用 Go 代码的基础,尤其在处理接口、泛型(Go 1.18+)和反射时不可或缺。在 Go 语言中,类型转换(Type Conversion)是将一种数据类型的值转换为另一种数据类型的操作。原创 2025-08-24 14:53:49 · 955 阅读 · 0 评论 -
golang5字符串
常用占位符:%v、%T、%d、%s、%f选择原则:根据输出需求选择合适的格式化选项文档参考:其他不常用的选项可以在需要时查阅文档strings包是 Go 中处理字符串的核心工具,上述方法覆盖了大部分日常开发需求。关键注意点:所有方法均返回新字符串,原字符串不会被修改(Go 字符串是不可变的)。方法参数中的sepcutset等若为空字符串,可能有特殊行为(如Split按字符分割)。索引相关方法返回-1表示未找到,需注意判断避免数组越界。原创 2025-08-24 14:54:17 · 1054 阅读 · 0 评论 -
GO函数式编程
Go 语言并非纯函数式编程语言,而是在保持自身通用语言定位的基础上,融合了函数式编程的核心特性,既避免了正统函数式编程的严苛限制,又保留了其灵活性与解耦优势,在实际开发中极具实用价值。其函数式编程的核心在于 “函数作为一等公民”,这与 C++ 的函数指针、Java 的 lambda 表达式有本质区别。Go 中的函数可直接作为变量、参数和返回值使用,例如高阶函数能接收其他函数作为参数,像apply函数通过接收函数参数实现逻辑复用,无需依赖具体操作细节。原创 2025-08-24 09:38:40 · 828 阅读 · 0 评论 -
GOLANG 接口
基本概念:接口定义了使用者(如download函数)和实现者(如Retriever)之间的契约关系角色划分使用者:调用接口方法的代码(如download函数)实现者:提供接口方法具体实现的代码(如Retriever)关键区别传统面向对象:由实现者定义接口(如File类声明实现Readable和Appendable)Go语言:由使用者定义接口(如Retriever接口由download函数的使用者定义)Duck Typing:只要类型实现了接口定义的所有方法,就被视为实现了该接口大黄鸭比喻。原创 2025-08-23 21:01:58 · 976 阅读 · 0 评论 -
GO 从入门到精通2
Go的反射机制通过 reflect 包提供了强大的动态编程能力,但需谨慎使用以平衡灵活性与性能。核心步骤为:通过 TypeOf / ValueOf 获取反射对象;操作类型或值(调用方法、修改字段等);注意类型安全和性能影响。在Go语言中,结构体标签(Tag)是一种附加在结构体字段上的元数据,用于提供额外的信息,通常用于序列化、ORM映射、字段验证等场景。标签通过反引号( )包裹,格式为 key:"value" ,多个标签之间用空格分隔。反射( reflect`包)是解析这些标签的主要方式。原创 2025-07-26 22:02:32 · 748 阅读 · 0 评论 -
GO 从入门到精通
下面是一个包含 Go 语言主要语法特性的完整示例代码,并附有详细的中文注释,帮助你理解 Go 的各种语法结构。这个程序模拟了一个简单的“学生管理系统”,包括结构体、方法、函数、接口、切片、映射、错误处理、并发(goroutine 和 channel)、 defer、包的使用等几乎所有常用语法。Go语法点是否包含说明包声明与导入✅package main, import变量声明与初始化✅var, 短变量声明 :=基本数据类型✅int, float64, string, bool函数定义与调用✅函数、多原创 2025-07-26 21:59:30 · 1139 阅读 · 0 评论
分享