自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 【golang长途旅行第28站】命令行读取

本文介绍了两种命令行参数读取方法:os.Args和flag包。os.Args通过切片存储参数,简单但要求顺序严格;flag包提供StringVar、IntVar等函数,支持按名称绑定参数,允许乱序输入。示例代码展示了如何定义、绑定和解析参数,最后对比了两种方法的区别:os.Args便捷但顺序敏感,flag包功能更强大可乱序处理。使用flag包时,还能获取未绑定的额外参数。

2025-08-22 00:22:37 389

原创 【golang长途旅行第27站】JSON

本文介绍了JSON数据格式及其在Golang中的应用。JSON作为轻量级数据交换格式,具有跨语言、易解析的特点。文章阐述了JSON的序列化(将数据结构转换为JSON字符串)和反序列化(将JSON字符串还原为数据结构)过程,提供了结构体、map和切片三种数据类型的转换示例。特别强调了通过tag标签控制JSON字段命名的技巧,以及Unmarshal函数自动初始化容器的特性。这些技术能有效提升网络传输效率,实现不同语言程序间的数据交互。

2025-08-21 00:31:25 893

原创 【golang长途旅行第26站】文件

本文介绍了文件操作的基本概念和常见方法。文件是存储数据的重要形式,程序通过输入输出流进行读写操作。文章详细讲解了文件的开关、带缓冲读取、一次性读取、创建写入等操作,并提供了判断文件存在、文件拷贝等实用功能的具体实现代码。最后通过统计文件字符数量的示例,展示了文件处理的实际应用场景。全文使用Go语言示例代码,涵盖了文件操作的主要API和常见问题解决方案。

2025-08-20 00:20:55 859

原创 golang的接口

本文介绍了Go语言中接口的基本概念和使用方法。接口定义了一组没有实现的方法,任何类型只要实现了接口中的所有方法,就自动实现了该接口。文章通过代码示例展示了接口的实现方式,并详细说明了接口的11个注意事项,包括接口不能创建实例、不能包含变量、可以继承多个接口等特点。最后指出接口的主要意义在于实现多态,使函数能够接收不同类型的参数,只要这些类型实现了指定的接口方法。这种设计体现了高内聚低耦合的编程思想。

2025-08-13 21:56:04 620

原创 golang的继承

Go语言通过结构体嵌套实现继承机制,核心要点包括: 继承通过匿名嵌套结构体实现,子结构体自动获得父结构体的字段和方法 访问规则遵循就近原则,同名时需显式指定结构体名 不同包中只能访问大写字母开头的字段和方法 支持多重继承,但需避免同名冲突 与组合的区别在于是否使用匿名结构体 继承提高了代码复用性,如商品-书示例所示,通过Good结构体嵌套,Book自动获得name/price等属性和相关方法。需要注意的是Go更推荐组合而非复杂的多重继承。

2025-08-12 22:58:22 680

原创 排序与查找,简略版

本文介绍了数组排序和查找的基本方法。排序分为内部排序(冒泡、选择、插入)和外部排序(合并排序等),重点讲解了冒泡排序的实现原理和优化方法,包括通过flag标志提前终止循环。查找部分则详细说明了二分查找的算法思路,通过递归实现有序数组的高效查找,并给出了Go语言的具体实现代码示例。文章内容涵盖从基础概念到实际代码实现,为理解数组操作提供了实用指导。

2025-08-11 23:10:56 733

原创 golang的二维数组

本文介绍了二维数组的基本概念和使用方法。二维数组可以理解为一维数组的数组,每个元素都是一个一维数组。文章展示了二维数组的初始化、声明方式(包括标准声明、混合声明和简化声明)以及两种遍历方法:双层for循环和for-range循环。通过示例代码演示了如何创建3x3的二维数组并输出其内容,以及针对不同维度的灵活遍历方式。这些基础操作是处理矩阵和表格数据的重要技能。

2025-08-09 23:58:35 370

原创 golang的方法

本文介绍了Go语言中方法的相关概念和使用细节。方法是一种作用于特定数据类型的函数,可以绑定到结构体或其他自定义类型上。文章详细说明了方法的声明语法、调用方式以及底层优化机制,如指针类型的自动解引用。同时对比了方法与函数的区别,指出方法绑定的数据类型可以灵活处理值类型和引用类型的调用。此外,还介绍了方法访问控制的规则和String()方法的特殊用途。通过代码示例展示了方法在实际开发中的应用场景和注意事项。

2025-08-08 23:18:09 1004

原创 golang的面向对象编程,struct的使用

Go语言面向对象编程摘要: Go语言通过结构体(struct)而非类(class)实现面向对象特性,具有简洁的设计哲学。其特点包括:1)使用匿名字段实现继承;2)通过接口实现多态;3)支持封装但无重载、构造/析构函数等传统OOP特性。结构体是值类型,内存中连续存储,但内部引用类型字段会被共享。创建方式多样,支持指针操作语法糖。注意:结构体强制转换需字段完全匹配,type重定义视为新类型,tag标签可用于序列化。这种设计使Go的OOP更灵活低耦合,强调面向接口编程。

2025-08-07 23:52:55 1066

原创 golang的map

本文介绍了Go语言中map的基本概念和使用方法。map是一种key-value结构的数据类型,key通常为int或string,value可以是多种类型。map需要先声明后通过make初始化才能使用。文章详细讲解了map的增删查改操作、遍历方式以及map切片的使用。同时说明了map作为引用类型的特点和自动扩容机制,并推荐使用struct作为value以提高效率。通过多个代码示例展示了map的具体应用场景和操作方法。

2025-08-06 23:22:01 612 1

原创 golang的切片

摘要:切片是Go语言中的动态数组,作为数组的引用类型,具有可变长度特性。文章介绍了切片的基本概念、创建方式(直接引用数组或make函数)、内存结构(包含指针、长度和容量)及常用操作(遍历、append扩容、copy复制)。切片与数组的区别在于其动态性和引用传递机制,修改切片会影响底层数组。此外,字符串可视为不可变的字节切片,修改需先转换为[]byte或[]rune。切片通过灵活管理内存,解决了数组长度固定和变量定义的问题。

2025-08-05 23:54:57 1363 1

原创 golang的数组

本文介绍了数组的基本概念和使用方法。数组是存储同类数据的集合,解决了定义大量变量的问题。文章详细说明了数组的定义、内存布局、初始化方式(四种方法)和遍历技巧(传统for循环和for-range)。重点讲解了数组的使用细节:长度固定、默认值、下标范围、值传递特性等。特别指出Go语言中数组是值类型,函数内无法修改外部数组,必须通过指针才能改变原数组。同时强调数组长度是其类型的一部分,在函数传参时必须指定长度。这些特性使数组成为处理批量数据的有效工具。

2025-08-04 23:49:21 953

原创 golang的包和闭包

本文介绍了Go语言中包和闭包的概念及使用要点。关于包的部分,说明了包的组织方式、引入方法(import路径)、使用细节(如包名规则、别名设置、命名冲突避免等)以及main包的特殊性。闭包部分通过代码示例,阐释了闭包是由函数及其引用的外部变量组成的整体,分析了闭包的特性(如变量持久化)和优势(如固定参数复用),并用类与方法的类比帮助理解闭包的工作机制。文章结合具体案例,提供了Go语言中包管理和闭包应用的实用指导。

2025-08-03 23:26:09 795 1

原创 golang的函数

本文介绍了Go语言函数的基本概念和使用方法。函数是将代码集合封装以完成特定功能的工具,具有重复使用、提高可读性和维护性的优点。文章详细说明了函数的基本语法、调用机制、栈空间分配等原理,并重点总结了12个使用注意事项:包括形参返回值的多类型支持、命名规范、值传递与引用传递的区别、不支持重载、函数作为数据类型等特性。同时介绍了自定义数据类型、返回值命名、可变参数等高级用法,通过代码示例展示了这些特性的具体应用。这些内容为Go语言函数的使用提供了系统性的指导。

2025-08-01 23:57:55 700

原创 golang的循环控制

本文介绍了Go语言中for循环的基本语法和使用方法。for循环有三种形式:带初始化、条件和迭代的标准形式;类似while的简化形式;以及无限循环形式。还详细说明了for循环的执行顺序、四要素以及遍历字符串和数组的两种方法(传统方法和for-range)。此外,文章还讲解了如何使用for循环实现while和do-while循环,以及break、continue、goto和return等控制语句的用法和注意事项,包括标签的使用、跳转控制等特性。最后强调了goto语句可能带来的代码可读性问题。

2025-07-30 23:39:21 818 1

原创 golang流程之分支控制

本文介绍了程序流程控制的三种主要类型:顺序控制、分支控制和循环控制。重点讲解了分支控制中的单分支、双分支、多分支、嵌套分支和switch分支结构。在Golang中,if语句必须包含条件表达式,且支持在条件中声明变量;switch语句默认每个case后都有break,支持fallthrough穿透,还能用于类型判断。文章还比较了switch和if的适用场景:switch适合具体数值匹配,if适合范围判断和布尔条件。

2025-07-28 22:10:55 794

原创 原码反码补码,位运算

本文介绍了计算机中的原码、反码和补码表示方法,以及位运算规则。正数的三种码相同,负数的反码是原码符号位不变其余取反,补码为反码加1。重点讲解了五种位运算符:与(&)、或(|)、异或(^)、右移(>>)和左移(<<),并通过具体示例演示运算过程,如2&4=0、2|4=6、-2^4=-6等。最后给出代码示例说明移位运算结果,强调计算机运算时都使用补码形式。

2025-07-27 21:53:21 375

原创 golang的进制以及进制间的互相转换

本文介绍了不同进制及其转换方法。主要内容包括:1)四种常用进制(二进制、八进制、十进制、十六进制)的表示方法;2)其他进制转十进制的方法;3)十进制转其他进制的方法;4)二进制与八进制、十六进制的相互转换。文中提供了Go语言的代码示例,演示了各种进制转换的实现过程,如二进制转十进制(101→5)、八进制转十进制(021→17)、十六进制转十进制(0xa2→162)等。重点讲解了8421法在二进制转十六进制中的应用,以及通过分组转换实现二进制与八进制、十六进制的互转。

2025-07-27 21:17:35 1191

原创 golang从控制台输入

本文介绍了在Go语言中如何获取用户终端输入的两种方法。首先需要导入fmt包,然后可以使用Scanln()或Scanf()函数读取输入。文章通过具体案例演示了这两种方法的用法:Scanln()逐个读取变量并回车确认,Scanf()则能一次性读取多个格式化输入。案例展示了如何从控制台获取姓名、年龄、薪水和是否喜欢编程等信息,并最终打印输出。

2025-07-26 21:50:59 235

原创 golang中的运算符(全集)

本文系统介绍了Golang中的各类运算符,包括算术、关系、逻辑、赋值等基本运算符及其特性。重点讲解了除法(/)和取模(%)运算的特殊规则、自增自减运算符的限制用法、逻辑运算符的短路特性,以及赋值运算符的使用规范。文章还对比了Golang与传统语言在运算符设计上的差异,如取消了三元运算符改用if-else替代,并提供了运算符优先级表。通过具体代码示例,详细说明了不同运算符的实际应用场景和注意事项,为理解Golang运算符机制提供了全面参考。

2025-07-26 21:49:54 1066

原创 Golang的标识符

本文介绍了Golang中标识符的概念、命名规则和注意事项。标识符包括变量、函数、对象和常量的名称,命名时只能包含字母、数字和_,不能使用关键字或以数字开头。特别说明空标识符_仅作占位符使用。文章强调Golang严格区分大小写,并提供了命名规范:包名应与目录名一致,变量/函数/常量名采用驼峰命名法,首字母大小写决定其可见性(大写可被外部包引用,小写仅限包内使用)。同时指出虽然系统类型名可用作标识符,但不建议这样做。

2025-07-25 21:35:53 223

原创 Golang的值类型和引用类型

本文介绍了Go语言中值类型和引用类型的区别。值类型(如基本类型、数组、结构体)直接存储值,通常在栈中分配内存;引用类型(如指针、map、slice)存储地址,数据通常在堆中分配。文章重点解释了内存分配原理,指出Go通过逃逸分析决定变量分配在栈还是堆,并说明当变量不再被引用时会被GC回收。此外,还通过示例代码展示了逃逸分析的实际应用场景,如函数返回指针导致变量逃逸到堆的典型情况,以及大对象、闭包变量等特殊处理规则。

2025-07-25 21:32:38 257

原创 golang中的指针

指针实际上是一种引用数据类型。它的作用是指向一个空间的地址。当然,指针自己也是有地址的。比如现在有个指针var ptrint = &i我们可以通过&ptr来确定指针的地址通过ptr来获得指针指向的空间内存储的东西在声明和赋值指针时我们会写出var ptr *int 等语句,这里的 *int表示的ptr指向的空间存储的是int类型的值var num int = 1 中,num变量指向内存中分配给它的一个空间,这个空间用于存储num被赋予的值。每个空间都是有地址的。

2025-07-24 21:33:25 857

原创 golang的基本数据类型转string,string转基本数据类型

本文介绍了Go语言中基本数据类型与字符串相互转换的常用方法。基本类型转字符串可通过fmt.Sprintf()或strconv包的函数实现,后者包括FormatInt、FormatFloat等,需注意参数类型限制。字符串转基本类型使用strconv包中的ParseInt、ParseFloat、ParseBool等函数,转换失败会返回默认值而非报错。文章详细说明了各函数的参数要求和使用场景,并提供了代码示例,强调错误处理和类型兼容性的重要性。

2025-07-24 21:25:04 958

原创 Golang基本数据类型的相互转换

Golang中基本数据类型的转换必须显式进行,使用T(v)语法。转换时原变量类型不变,仅值被转换。大精度转小精度时可能溢出,需要特别注意范围。不同类型变量运算前必须显式转换类型,但常量表达式会先计算再转换类型。例如int8(-2+128)合法,而int8(a)+128会因128超出int8范围报错。

2025-07-23 23:52:29 371

原创 Go的整型,浮点型,布尔型,字符型,字符串型的使用介绍

本文介绍了Go语言中的基本数据类型及其特性。整型部分说明了int、uint、rune、byte等类型的区别和使用原则;浮点型部分对比了float32和float64的精度差异及使用建议;布尔型强调只能使用true/false值;字符型详细解释了UTF-8编码规范及其与ASCII的关系;字符串型则介绍了两种表示形式和拼接方法。全文着重阐述了各数据类型的存储方式、取值范围和使用注意事项,为Go语言基础数据类型提供了全面而简洁的参考指南。

2025-07-22 21:50:35 1028

原创 Golang的变量

本文介绍了Go语言在变量处理上的创新特点。作为新兴编程语言,Go在变量声明方式上提供了多种选择:既可单独声明,也可声明赋值同时进行,还能批量定义变量。在数据类型方面,Go具有丰富的数值类型(整型、浮点型)、字符型(用byte和rune表示)、布尔型和字符串等基本类型,以及指针、数组、切片等复杂类型。特别指出Go的int类型长度会根据系统位数自动调整。文章最后介绍了查看变量类型和占用空间的函数,并预告后续将深入介绍Go语言的具体使用细节。

2025-07-21 21:55:25 500

原创 系统学习技术或者语言前,建议先学一下Markdown,让你学得有条不紊,掌握全局

Markdown是一种轻量级标记语言,由John Gruber于2004年创建,通过简单符号(如#、*等)实现结构化文档编写。它具有易转换、纯文本存储、跨平台协作等优势,广泛应用于笔记、博客和AI交互。常用语法包括:标题(#)、文本样式(斜体)、列表(-)、链接/图片()、代码块(```)、表格(|)等。支持VSCode、Typora等编辑器,学习成本低,是提升写作效率的利器。掌握基础语法即可快速上手,适用于多种文档场景。

2025-07-20 23:40:21 1150

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除