- 博客(41)
- 收藏
- 关注
原创 GitHub Action工作流语法
本文摘要介绍了GitHub Actions工作流配置文件的核心结构和常用字段。主要内容包括: 基础结构包含name、on、jobs三个主要部分 jobs部分详细说明了运行环境(runs-on)、步骤(steps)及其子字段 步骤配置包含使用Action(uses)、运行命令(run)、参数传递(with)、环境变量(env)等 高级功能包括条件判断(if)、并行策略(strategy)、权限控制(permissions)、任务依赖(needs) 其他实用功能如容器服务(services)、超时控制(time
2025-11-08 23:06:47
640
原创 Go语言入门(22)-通道 channel
本文介绍了Go语言中通道(channel)的基本使用方法和特性。主要内容包括:1)通道的创建和基本操作(发送/接收数据);2)使用select语句处理多个通道,结合time.After实现超时控制;3)nil通道的特性及其应用场景。文中通过两个示例代码演示了goroutine间通过通道通信,以及select语句的典型用法。最后特别指出,未初始化的nil通道会永久阻塞,但在某些场景下可以巧妙利用这一特性控制程序流程。
2025-10-08 20:00:28
321
原创 Go语言入门(22)-goroutine
Go语言中,goroutine是轻量级的并发执行单元,创建效率高且使用简单。通过go关键字即可启动goroutine,实现并发执行。与顺序代码不同,goroutine的执行顺序不确定,且需要解决主程序等待问题。示例展示了goroutine的基本用法,但存在执行时间不确定的缺陷,后续可通过通道机制解决同步问题。goroutine采用分时技术实现并发,而非真正的并行执行。
2025-10-06 12:10:07
286
原创 Go语言入门(21)-错误处理
Go语言允许函数和方法同时返回多个值。按照惯例,函数在返回错误时,最后边的返回值应用来表示错误。调用函数后,应立即检查是否发生错误。如果没有错误发生,那么返回的错误值为nil。那如何优雅地进行错误处理/减少错误处理代码呢?有一种策略是:将程序中不会出错地部分和包含潜在错误隐患地部分隔离开来。对于不得不返回错误地代码,应尽力简化相应地错误处理代码。再写入文件时,可能会出错,例如:路径不正确、权限不够、磁盘空间不够等。。。文件写入完毕后,必须被关闭,确保文件被刷到磁盘上,避免资源的泄露。下面看一个例子。
2025-10-06 10:29:43
977
原创 Go语言入门(20)-nil
Go语言中nil表示零值,适用于指针、slice、map和接口类型。它比其它语言的null更友好但需谨慎使用,解引用nil指针会导致崩溃。nil作为未初始化的默认值,可以被range、len等内置函数处理。接口变量仅在类型和值均为nil时才等于nil。文章还探讨了替代nil指针的存储方案。
2025-10-05 22:05:05
367
原创 Go语言入门(19)-指针(下)
Go语言中参数传递均为值传递,函数接收的是参数的副本。指针作为参数时,函数获得地址副本,可通过解引用修改原值。方法接收者处理指针与参数类似,调用时会自动取地址。结构体支持获取字段内存地址的内部指针特性。map等集合类型是隐式指针,传递时不会被复制。slice本质是包含数组指针、容量和长度的结构体,传递时可通过内部指针修改底层数组。指针与接口的结合使用也体现了Go对指针的灵活运用。
2025-10-04 17:35:10
168
原创 Go语言入门(18)-指针(上)
本文介绍了Go语言中指针的基本概念和使用方法。主要讲解了地址操作符(&)和解引用操作符(*)的功能,并通过示例演示了指针变量的声明、赋值和比较。文章还详细说明了指向结构体、数组、slice和map的指针特性,指出结构体和数组会自动解引用,而slice和map则需要显式解引用。通过多个代码示例,展示了指针在Go语言中的实际应用场景和注意事项。
2025-10-04 10:51:43
249
原创 Go语言入门(17)-接口
Go语言接口关注行为而非状态,通过定义方法集合来隐式实现。任何类型只要满足接口要求的方法,就自动实现该接口,无需显式声明。示例展示了如何定义talker接口,让martian和laser类型通过实现talk()方法来满足接口。文章还演示了stardater接口的运用,说明内置类型和自定义类型如何通过接口无缝协作。Go鼓励使用简单接口(常以-er结尾)促进组合而非继承,如fmt.Stringer接口。这种设计使组件界限清晰,提高了代码灵活性。
2025-10-03 10:54:13
168
原创 Go语言入门(16)-组合和转发
Go语言通过结构体实现对象组合,支持嵌入特性实现方法转发。文章展示了组合的多种类型,包括包含其他结构体作为字段的标准组合方式。示例代码演示了如何将temperature和location结构体组合到report中,并通过嵌入实现方法转发。组合提供了比继承更简单灵活的对象复用方式,是Go语言面向对象编程的核心机制之一。
2025-09-02 11:22:56
210
原创 Go语言入门(15)-Class
摘要:Go语言通过struct和方法实现面向对象功能,虽然没有class和继承。文中展示了用struct表示坐标,并通过decimal()方法进行经纬度计算。构造函数通常以new或New开头,如示例中的newLocation()。errors.New()是典型的构造函数命名方式,简洁且可导出。Go通过struct与方法组合,能够实现类似class的功能。
2025-09-02 10:52:36
200
原创 Go语言入门(14)-struct
本文介绍了Go语言中结构体(struct)的基本用法。主要内容包括:1)结构体的定义和初始化,支持匿名结构体和类型复用;2)两种初始化方式:按字段顺序或成对字段值;3)结构体复制和组成slice;4)将结构体编码为JSON格式,需注意字段名首字母大写才能导出。文中通过多个代码示例演示了这些特性,包括位置坐标处理、JSON编码等实际应用场景,展示了结构体在组织不同类型数据方面的灵活性。
2025-08-29 15:08:38
230
原创 Go语言入门(13)-map
Go语言中map是一种键值对集合,支持快速查找和任意类型key。声明时需指定key和value类型,通过make函数可预分配空间。map在赋值或传递时不会创建副本,而是共享底层数据。if-ok语句可用于判断map中key是否存在、接口类型断言和检查channel状态。此外,map还可与slice结合实现数据分组功能。示例代码展示了map的基本操作、if-ok语句的多种应用场景以及如何用map对温度数据进行分组处理。
2025-08-29 14:18:40
303
原创 Go语言入门(12)-更大的切片
本文介绍了Go语言中切片(slice)的相关操作:1. 切片的基础特性,包括长度(length)和容量(capacity);2. 三索引切片操作可以限制新建切片的容量;3. 使用make函数预分配切片空间以提高性能;4. 可变参数函数的声明和使用方法。文中通过多个代码示例演示了切片操作、容量控制、预分配策略以及可变参数函数的实现方式,并配有dump函数输出切片信息辅助理解。
2025-08-29 12:51:05
198
原创 Go语言入门(11)-slice(切片)
Go语言中slice是对数组的引用视图,使用半开区间语法(如planets[0:4])切分数组,包含起始索引但不含结束索引。省略起始/结束索引时默认为数组首尾。slice可以用于数组和字符串切分,字符串切分按字节计算。创建slice的方式包括数组切分(如dwarfArray[:])或直接声明(如[]string{"a","b"})。slice可作为底层类型绑定方法,如sort.StringSlice(planets).Sort()实现排序。切分操作不会修改原数组,仅创
2025-08-21 15:20:14
238
原创 Go语言入门(10)-数组
数组的长度可由内置函数len来确定。在声明数组时,未被赋值元素的值是对应类型的零值。可以在复合字面值里使用“...”作为数组的长度,这样,Go编译器会自动计算出数组的元素数量。数组也是一种值,函数通过值传递来接受参数。所以数组作为函数的参数就非常的低效。数组的长度也是数组类型的一部分(尝试将长度不符的数组作为参数传递,将会报错)无论数组赋值给新的变量还是将它传递给函数,都会产生一个完整的数组副本。数组中的每个元素都可以通过“[]”和一个从0开始的索引进行访问。无论哪种方式,数组的长度都是固定的。
2025-08-20 16:43:11
216
原创 Go语言入门(9)-一等函数
摘要:本文展示了Go语言中将函数赋给变量的用法。通过定义kelvin类型和fakeSensor/realSensor函数,演示了如何将函数赋值给变量sensor并进行调用。文中还介绍了函数类型声明、匿名函数立即执行的方法,以及闭包的概念。示例代码包括随机温度生成和带偏移量的校准函数,展示了通过闭包捕获外部变量的特性。这些技术可以简化代码并提高灵活性,特别是在需要动态切换函数实现或创建定制化函数时。
2025-08-18 11:03:26
235
原创 Go语言入门(8)-方法
Go语言允许使用type关键字声明新类型,如type Celsius float64,这会创建一个与基础类型(float64)具有相同行为但类型不同的新类型,提高代码可读性和类型安全。新类型支持基础类型的运算操作,但不同类型不能混用。Go的方法比传统面向对象语言更灵活,可以将方法与包内任意类型(除预声明类型)关联,为类型添加特定行为。这种机制兼顾了类型安全性和方法扩展的便利性。
2025-08-15 14:14:41
182
原创 Go语言入门(7)-函数
Go语言函数声明与使用摘要:函数通过func关键字声明,支持多参数同类型简写(如func Unix(sec, nsec int64))。函数可返回多个值,返回值可命名或省略(如(int, error))。可变参数函数使用...语法(如func Println(a ...interface{}))。示例展示了温度转换函数kelvinToCelsius的实现与调用,体现Go函数按值传递参数和同包内直接调用的特性。
2025-08-15 13:00:20
164
原创 Go语言入门(6)-类型转换
本文介绍了Go语言中的类型转换注意事项。主要内容包括:1)数值类型转换时需检查范围防止环绕行为;2)rune/byte与string的相互转换方法;3)使用strconv包的Itoa和Atoi函数进行数值与字符串的转换,其中Atoi需处理可能的错误;4)布尔类型的转换和条件判断,包括使用Sprintf格式化输出。文章强调Go是静态类型语言,转换时需特别注意类型兼容性和错误处理。
2025-08-15 10:27:22
218
原创 Go语言入门(5)-多语言文本
摘要:本文介绍了Go语言中字符串和字符的相关概念。字符串字面值可通过``实现原始字符串输出,避免转义字符处理。Unicode字符用codepoint表示,Go中rune是int32别名用于存储Unicode,byte是uint8别名用于ASCII字符。字符字面值用单引号括起,默认为rune类型。字符串可变赋值但内容不可变。内置函数len()可计算字符串字节数,这些函数无需导入即可直接使用。
2025-08-12 16:21:56
142
原创 Go语言入门(4)-整数
本文介绍了整数类型的基本分类和特性。整数分为有符号和无符号两种,共8种类型,从8位到64位不等,每种类型都有相应的取值范围和存储大小。文章还介绍了printf()函数中打印数据类型(%T)和十六进制数(%x)的方法,包括设置最小宽度和填充的格式控制。特别说明了整数"环绕"现象,即当数值超出类型范围时会从最小值重新开始。通过示例代码展示了如何输出颜色的十六进制表示,以及整数环绕的具体表现。
2025-08-12 14:09:25
130
原创 Go语言入门(3)-实数
若没有指定宽度,就按照数值实际的位数进行显示。从上方示例可以看到,浮点类型不适合用于金融类算法,为了尽量最小化舍入错误,建议先做乘法,再做除法。使用Printh或println打印浮点类型的时候,默认的行为是尽可能的多显示几位小数。如果不想这样,就使用printf函数,结合%f格式化动词来指定显示小数的位数。在Go语言中,想要使用单精度类型,必须在声明变量时指定该类型。最后要说的是,实际编码中,应尽量不使用浮点型数计算。宽度:会显示出的最少字符个数(包含小数点和小数)精度:小数点后边显示的位数。
2025-08-12 13:29:30
220
原创 Go语言入门(2)
摘要:Go语言通过var声明变量可自动推断类型,简化编码。其switch语句支持fallthrough执行下一case,for循环提供短声明方式减少代码量。if和switch同样支持短声明,如if num := rand.Intn(3); num == 0。rand.Intn()函数可生成随机数,time.Sleep()实现延时功能。这些特性使Go在流程控制上更简洁高效。
2025-08-11 18:45:44
155
原创 Go语言入门(1)
与C语言#include <stdio.h>+int main()不同,在Go语言中,利用package main、import “xx”和 func main()来构成最基本的编程格式,“import”代表导入库,“fmt”就是库的名字,常用到的print家族函数(print、printf、println)均来自这个库,调用库中函数时,需要利用“.”符号进行连接。比如我的文件名是main.go,要输入的内容就是go run main.go(不要忘记空格),然后回车。声明:本文默认已成功安装编程环境。
2025-08-11 17:48:01
161
原创 初识Go语言 (未完待续)
Google作为Go语言的主推者,并没有简简单单地把语言推给开源社区了事,它不仅组建了一 个独立的小组全职开发Go语言,还在自家的服务中逐步增加对Go语言的支持,比如对于Google 有战略意义的云计算平台GAE(Google AppEngine)很早就开始支持Go语言了。本章将简要介绍Go语言的发展历史和关键的语言特性,并引领读者对Go语言的主要特性进 行一次快速全面的浏览,让读者对Go语言的总体情况有一个清晰的印象,并能够快速上手,用 Go语言编写和运行自己的第一个小程序。 更丰富的内置类型。
2025-08-11 17:47:48
260
原创 开源鸿蒙OpenHarmony系统移植
本文以移植名为MyProduct的开发板为例讲解移植过程,假定MyProduct是MyProductVendor公司的开发板,使用MySoCVendor公司生产的MySOC芯片作为处理器。在名称的目录下创建一个config.json文件,该文件用于描述产品所使用的SOC 以及所需的子系统。配置如下:},...主要的配置内容配置项说明(必填)产品名称version(必填)版本type(必填)配置的系统级别,包含(small、standard等)target_cpu。
2024-06-28 10:00:00
1426
原创 开源鸿蒙OpenHarmony开发入门
方舟开发框架针对不同目的和技术背景的开发者提供了两种开发范式,分别是基于ArkTS的声明式开发范式(简称“声明式开发范式”)和兼容JS的类Web开发范式(简称“类Web开发范式”)。有了应用模型,开发者可以基于一套统一的模型进行应用开发,使应用开发更简单、高效。通过构建一个简单的具有页面跳转/返回功能的应用(如下图所示),快速了解工程目录的主要文件,熟悉OpenHarmony应用开发流程。在开始之前,您需要了解有关OpenHarmony应用的一些基本概念:UI框架的简单说明、应用模型的基本概念。
2024-06-28 08:00:00
1418
原创 开源鸿蒙openharmony保姆级教程
OpenHarmony是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目,目标是面向全场景、全连接、全智能时代,搭建一个智能终端设备操作系统的框架和平台,促进万物互联产业的繁荣发展。。从码云代码仓库获取。通过repo或git工具从代码仓库中下载,此方式可获取最新代码。通过网站获取。访问网站,查找满足需求的开源发行版,直接下载(或者定制后下载),再通过hpm-cli命令工具将所需的组件及工具链下载、安装到本地。从镜像站点下载归档后的发行版压缩文件。
2024-06-28 03:22:01
1775
原创 Linux文件编程_标准C库练习
(内容缓冲区,单个字符大小,字符个数,哪个文件(指针));(文件路径,打开模式)wb 只写方式打开一个二进制文件。r+ 可读可写方式打开一个文本文件。rb+ 可读可写方式打开一个二进制文件。a+ 可读可写追加方式打开一个文本文件。
2023-02-04 20:46:50
188
原创 Linux文件编程_应用篇
在下图代码中,argc表示参数,argv是一个二级指针,存放着参数数组的地址。这里插播一个老知识,字符串strstr()函数。needle:在上述文件里找到指定的内容;haystack:要操作的文件。把文件内LENG的值改为5。
2023-02-04 13:49:32
114
原创 Linux文件编程_文件操作实现cp指令
解决方法:利用lseek函数计算出大小,并在这之后开辟一个比此大小略大一点(保证系统稳定)的空间。上述代码有一些不足之处:readBuf分配内存较大,占用资源;需求:开辟空间更合理更节约资源。不要忘记在操作后重新定位光标至文件头部(第十五行)需包含C语言参数(进程指令,原文件,目标文件)b. 读取原文件到buf(存放数据的指针)里;d. 将buf内容写入到目标文件;c. 打开/创建目标文件;e. 关闭这两个文件.
2023-02-04 09:48:05
188
原创 Linux文件编程_相关函数
(文件描述符,指向数据的指针,写入文件的大小)在内容写入完毕后,光标的位置会自动定位到输入内容的最后一个字符,所以在读取时,只能读取到内容后方的内容(空气)。其中,0600代表可操作的权限,可读:r/4,可写w/2,可执行x/1,故0600代表可读可写权限(4+2)补充一下:close()函数,在读写完成后需要关闭文件,用此函数,括号内为文件对应的描述符。若没有此指令,则会覆盖相应字节的内容。O_TRUNC 属性去打开文件时,若文件本身有内容,则全覆盖。,每个文件对应一个文件描述符,以打开想要打开的文件。
2023-02-03 16:00:10
180
原创 【链表】从指定节点后方插入新节点
采用函数封装形式,便于培养模块化思维。THE END->编写主函数,实现功能。PS:本程序在Linux环境下运行。
2023-01-29 17:28:29
204
原创 Linux常用指令(2)
ping +ip地址/域名 有返回值,则该IP已被占用,反则未被占用。*.c 通配符,选中所有带“.c”的文件。ifconfig 可查网络各种设置(ip地址,网卡名称等)pwd 显示文件所在路径。mkidr+xx 创建名称为xx的文件夹。cd+xx 进入文件夹xx。
2023-01-24 23:19:16
90
原创 Linux常用指令(1)
10_2. ls-a 显示所有文件,包含隐藏的文件/文件夹。vi xx.c(xx为C文件的文件名) 命令行模式,按i进入输入模式;gcc 文件名 -o 定义的名 编译文件,定义的程序名变绿即编译通过。命令行模式下,输入:wq 退出vi,保存代码(w:保存,q:退出)
2023-01-24 23:07:08
110
原创 C语言练习题(6)
随便给出几个数{32,51,88,40,49},要求这一组数按照升序(从小到大)排列或降序(从大到小)排列。首先我们定义一些需要用到的变量:len的作用是计算出数组的长度。接下来进入第一步:第二步:这里可能有些小白会看不懂,粗略讲解一下。变量i是在数组内的,代表数组的位数。如题所示的一个存放五个整数的数组,i
2022-12-01 23:57:25
332
原创 C语言练习题(5)
有一个分数序列:2/1,3/2,5/3,8/5,13/8,21/13.....求出这个数列的前20项和。//scanf用%lf来接受double类型。//printf用%f来接受double类型。printf("请输入要求前几项的和:\n");注意,该题目为一个数列,且首项已给出,故需要给其赋值。Ⅱ.初始化并利用for循环运算、求和。Ⅰ.定义一些需要用到的变量((全部代码底部自取不谢)
2022-11-22 22:39:45
318
原创 C语言练习题(4)
Ⅰ.利用for循环寻找每一个小于1000的数(num),并用if判断i是否为num的因子;如果愿意勤奋一点,可以用笔在纸上先构建好流程,之后顺着流程敲代码就好了。Ⅱ.判断和值是否和所寻找的和值相等(完数),是便输出;//每循环一次,重置一次和。
2022-11-22 21:52:29
245
原创 C语言练习题(3)
我们选用for和if的嵌套来解决问题,话不多说,上代码。c = i/100;本题比较简单,没有什么太多需要注意的地方。//养成好习惯,定义初始变量记得赋值。(代码在底部,方便直接用)
2022-11-22 11:06:38
350
原创 小白C语言练习题(2)
给一个不多于5位的正整数,要求:1.求出它是几位数;2.分别输出每一位数字;3.按逆序输出各位数字(such as 原123,输出321);
2022-11-06 23:40:31
306
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅