- 博客(18)
- 收藏
- 关注
原创 【从零开始学习Go语言 | 第十一篇】Go语言基础之结构体
本文全面介绍了Go语言中的结构体(struct)及其应用。结构体是一种复合数据类型,允许组合多个不同类型的字段,用于表示现实世界中的复杂实体。文章详细讲解了结构体的定义、初始化(零值、字面量、指针)、字段访问与修改,以及作为函数参数和返回值的用法。重点内容包括嵌套结构体、结构体比较规则、与JSON的交互、内存布局特点,以及空结构体的特殊用途。文章还通过学生信息管理系统的示例展示了结构体的实际应用,并指出常见注意事项(如指针传递、nil指针风险等)。结构体是Go语言面向对象编程的基础,通过组合和方法实现数据封
2026-08-02 09:52:55
512
原创 【从零开始学习Go语言 | 第十篇】Go语言基础之指针
本文介绍了Go语言中指针的基本概念和使用方法。指针在Go中用于存储变量地址,通过&取地址、*解引用操作实现间接访问。与C/C++不同,Go指针不支持算术运算,更加安全。文章详细讲解了指针地址、指针类型、指针取值,并通过示例演示了指针传值。同时对比了new和make的区别:new分配内存返回指针,make用于初始化slice/map/channel。指针在Go中主要用于修改外部变量、传递大结构体等场景。最后总结了指针的零值nil检查、与结构体方法配合等使用要点,为后续学习接口和并发打下基础。
2026-06-16 17:52:22
425
原创 【Go语言LeetCode刷题手记|第四天】2815. 数组中的最大数对和 3623. 统计梯形的数目 I - 力扣(LeetCode)
本文讲解了两道LeetCode算法题的解题思路。第一题2815要求找出数组中数位最大数字相等的数对的最大和,解法是维护一个哈希表记录各数位最大值对应的最大数值,遍历时检查并更新答案。第二题3623统计能构成水平梯形的四点组合数,关键思路是统计各y坐标点数后计算不同y坐标取两点组合的乘积和。两题均采用高效的一次遍历方法,时间复杂度分别为O(nlogU)和O(n),并提供了对应的Go语言实现代码。文章强调了"枚举右,维护左"的解题思想对优化算法效率的重要性。
2026-06-13 22:06:57
346
原创 【从零开始学习Go语言 | 第十篇】Go语言基础之函数
本文系统介绍了Go语言中函数的各种特性,包括基本定义、参数与返回值、可变参数、函数作为一等公民(赋值、传参、返回)、匿名函数与闭包、defer语句、init函数等核心概念。重点讲解了Go函数的独特设计,如多返回值、命名返回值、函数类型、值传递机制等,并提供了大量代码示例。文章还指出了Go函数与其他语言的差异,如不支持默认参数和重载,最后总结了函数在Go程序中的核心地位,为后续学习指针和面向对象编程打下基础。
2026-06-11 23:48:27
479
原创 【从零开始学习Go语言 | 第九篇】Go语言基础之map
本文系统介绍了Go语言中的map(映射)结构,主要内容包括:map的定义与特点(无序键值对集合,键唯一且可比较);创建map的三种方式(make函数、字面量、声明nil map);基本操作(增删改查、遍历及注意事项);map的引用特性与零值比较;键类型限制(不可用slice/map/function);常见使用场景(统计计数、存储切片等);并发安全问题及解决方案(加锁或sync.Map);与切片的对比;以及使用中的常见陷阱(nil map、零值返回、遍历顺序等)。map作为高效的哈希表实现,是处理关联数据的
2026-06-07 22:12:17
410
原创 【Go语言LeetCode刷题手记|第四天】34. 在排序数组中查找元素的第一个和最后一个位置 35. 搜索插入位置
本文介绍了二分查找算法在解决LeetCode两道题目中的应用。通过34题展示了如何用二分查找确定目标值在有序数组中的起止位置,提出了通用的lowerBound模板函数,并解释了如何通过调整参数来解决"第一个大于/等于"和"最后一个小于/等于"四种边界情况。35题则直接应用该模板解决搜索插入位置问题。文章强调这套二分查找模板具有通用性,能高效处理O(logn)时间复杂度的有序数组查找问题,通过调整target参数即可适应不同边界条件的查找需求。
2026-06-07 21:42:43
487
原创 【Go语言LeetCode刷题手记|第三天】713. 乘积小于 K 的子数组 3258. 统计满足 K 约束的子字符串数量 I
本文讲解了两道关于不定长滑动窗口的算法题:713.乘积小于K的子数组和3258.统计满足K约束的子字符串数量I。对于乘积问题,通过维护滑动窗口乘积,当乘积≥k时收缩左边界,并利用数学性质高效计算子数组数量。对于二进制字符串问题,维护0和1的计数,任一计数≤k即满足条件。两题都采用相同模式:固定右边界,收缩左边界,利用right-left+1计算满足条件的子数组数量。时间复杂度均为O(n),空间复杂度O(1)。文章强调审题重要性,并展示了滑动窗口处理连续子数组问题的通用思路。
2026-05-31 12:41:55
412
原创 【从零开始学习Go语言 | 第八篇】Go语言基础之切片
本文详细介绍了Go语言中的切片(Slice)概念及其使用方法。切片是基于数组的动态序列结构,由指针、长度和容量三部分组成,能够灵活地增长和缩减。文章讲解了多种创建切片的方法(数组切片、字面量、make函数等),并详细说明了append函数的动态扩容机制和copy函数的复制功能。同时强调了切片作为引用类型的特点,比较了切片与数组的区别,指出了常见的使用陷阱(如共享底层数组、必须接收append返回值等)。最后通过学生名单管理的综合示例展示了切片的实际应用,说明切片是Go语言中处理序列数据的主要工具。
2026-05-29 21:37:21
742
原创 【从零开始学习Go语言 | 第七篇】Go语言基础之数组
本文系统介绍了Go语言数组的基本概念和使用方法。主要内容包括:数组的定义与声明方式、三种初始化方法(单独赋值、数组字面量、简短声明)、元素的访问与修改、获取数组长度、遍历数组的两种方式(传统for循环和for range)。重点讲解了多维数组的声明、初始化和遍历,特别强调了数组作为值类型的特性(赋值和传参时会产生完整拷贝)。最后指出了数组的局限性(长度固定、值拷贝开销大),并预告切片将解决这些问题。文章通过丰富示例帮助读者全面理解Go数组这一基础数据结构。
2026-05-26 22:52:15
604
原创 【从零开始学习Go语言 | 第六篇】Go语言基础之流程控制
本文介绍了Go语言中的流程控制语句,包括条件分支if、循环for、分支选择switch、跳转goto以及循环控制break和continue。if语句支持初始化表达式和嵌套条件判断;for循环是Go唯一的循环结构,可模拟while和无限循环,并支持range遍历;switch语句灵活且默认不贯穿,可使用fallthrough强制执行下一case;goto用于跳转,break和continue可配合标签控制循环流程。这些语句组合能实现复杂的业务逻辑,是Go编程的核心基础。
2026-05-26 12:15:32
858
原创 【Go语言LeetCode刷题手记|第二天】1052. 爱生气的书店老板 3679. 使库存平衡的最少丢弃次数
本文分享了力扣两道滑动窗口题目的解题思路。第一题1052通过计算固定满意顾客数s0和滑动窗口内可挽回顾客数maxSum之和来求解;第二题3679使用滑动窗口统计物品出现次数,当超过阈值m时丢弃物品并标记为0以避免重复计数。两题都体现了滑动窗口的应用技巧,需要注意边界条件和细节处理。作者通过解题实践体会到算法的魅力,并鼓励读者坚持练习。
2026-05-25 21:19:15
283
原创 【从零开始学习Go语言 | 第五篇】Go语言之运算符,不只是加减乘除
今天的内容不难,但有几个要点值得记一下:整数除法截断,不保留小数浮点数不要直接==比较&&和||短路求值,写代码可以利用这个特性++和--不能用在表达式里没有三元运算符,老老实实写if-else不确定优先级?加括号,加括号,加括号(说三遍)如果我的内容对你有帮助,请。创作不易,大家的支持就是我坚持下去的动力!
2026-05-25 09:00:00
474
原创 【Go语言LeetCode刷题手记|第一天】2379. 得到 K 个黑块的最少涂色次数 2841. 几乎唯一子数组的最大和
本文分享了定长滑动窗口问题的解题模板和两道LeetCode例题解析。作者介绍了"入-更新-出"的三步解题思路,并提供了Go语言实现的2379题(求连续K个黑块的最少涂色次数)和2841题(求几乎唯一子数组的最大和)的代码示例。文章还给出了C++和Go版本的通用滑动窗口模板,强调这类题目通过套用模板即可解决。最后作者鼓励读者点赞支持,表示会继续分享解题经验。全文重点在于传授滑动窗口问题的标准化解题方法。
2026-05-24 18:03:07
327
原创 【从零开始学习Go语言 | 第四篇】Go语言基础之基本数据类型
本文介绍了Go语言中的数据类型,包括整型、浮点型、布尔型、字符串等基本类型及其特性。重点讲解了整型家族成员(int8/16/32/64及对应无符号类型)、浮点型的精度问题(float32/64)、布尔型的严格使用规则,以及字符串处理中的byte和rune区别。文章还涉及类型转换的显式要求、数字字面量语法和多行字符串表示等实用技巧,并简要提及复数类型。通过具体代码示例展示了各种数据类型的定义和使用方式,帮助开发者理解Go语言类型系统的特点。
2026-05-23 22:42:24
583
原创 【从零开始学习Go语言 | 第三篇】Go语言基础之变量和常量
本文介绍了Go语言中的标识符、关键字、变量和常量的基本概念与使用规则。标识符由字母、数字和下划线组成,区分大小写且首字母大小写决定包外可见性。变量声明需指定类型,支持批量声明和类型推导,函数内可使用短变量声明":="。常量使用const声明,必须初始化且不可修改。特别介绍了iota常量计数器的使用,包括基础自增、跳过值、位运算枚举等场景。文章还强调了命名规范和变量初始化规则,帮助开发者编写更规范的Go代码。
2026-05-23 13:33:04
623
1
原创 【从零开始学习Go语言 | 第二篇】从零开始搭建Go语言开发环境
VS Code全称Visual Studio Code,是微软公司开源的一款免费现代化轻量级代码编辑器,支持几乎所有主流的开发语言的语法高亮、智能代码补全、自定义热键、括号匹配、代码片段、代码对比 Diff、GIT 等特性,支持插件扩展,支持 Win、Mac 以及 Linux平台。虽然不如某些IDE功能强大,但是它添加Go扩展插件后已经足够胜任我们日常的Go开发。
2026-05-22 15:40:33
656
原创 【从零开始学习Go语言 | 第一篇】为什么要学习Go语言?—— Go的特点、应用场景(云原生、微服务、CLI工具等)
Go语言是由Google开发的开源编程语言,诞生于2007年,旨在解决C++编译慢、Java复杂等问题。其核心特点包括:高效的并发处理(goroutine)、极简语法、快速编译和强大的标准库。Go广泛应用于云原生基础设施(如Docker、Kubernetes)、微服务、CLI工具等领域,因其高性能、易部署和跨平台特性备受青睐。通过简洁的代码示例(如5行启动HTTP服务器)展示了Go的高效性。尽管存在对泛型、错误处理等的误解,Go凭借其简单实用的设计成为云原生时代的重要语言。
2026-05-21 14:09:38
613
原创 Java又要“死”了?985计算机研0的一点看法
这个就不用说了,上限高的一p,组里有拿过字节筋斗云的,我只能说他干一年相当于我干几年,实习日薪几k的也不在少数。Azul 2026年最新调研里,62%的企业正在使用Java开发AI相关功能,比去年的50%涨了一大截。给大家放一下岗位对比(薪资数据)agent开发目前刚起步,倒是个不错的选择,但agent开发也得会后端的东西啊。除了算法、agent开发,我觉得Java是最好的选择了吧,没有之一。说白了,很多Agent开发,本质是“AI + 后端工程”。Java不是被AI抛弃了,而是成了AI落地的重要工具。
2026-05-19 15:46:05
85
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅