go
文章平均质量分 68
Cc_sec
这个作者很懒,什么都没留下…
展开
-
go读取yaml,json,ini等配置文件
实际项目中,要读取一些json等配置文件。今天就来说一说,Golang 是如何读取YAML,JSON,INI等配置文件的。原创 2023-08-31 16:45:49 · 2221 阅读 · 0 评论 -
go读取文件的几种方法
在 bufio 的源码注释中,曾说道 bufio.ReadLine() 是低级库,不太适合普通用户使用,更推荐用户使用 bufio.ReadBytes和bufio.ReadString 去读取单行数据。直接将数据直接读取入内存,是效率最高的一种方式,但此种方式,仅适用于小文件,对于大文件,则不适合,因为比较浪费内存。每次仅读取一行数据,可以解决内存占用过大的问题,但要注意的是,并不是所有的文件都有换行符 \n;本例中,会每次读取 100 字节的数据,并发送到通道中,由另外一个协程进行读取并打印出来。原创 2023-08-31 16:42:56 · 2175 阅读 · 0 评论 -
go中的并发
前面我们说互斥锁是完全互斥的,但是有很多实际的场景下是读多写少的,当并发去读取一个资源不涉及资源修改的时候是没有必要加锁的,如果使用完全互斥锁的话,会导致读多的协程会堵塞等待锁的释放,很影响效率,这种场景下使用读写锁是更好的一种选择。如果不使用WaitGroup,将不会看到goodjob协程的输出打印,只有main协程的输出,因为main协程并不会去等待其他协程,而是先执行并退出main协程,一旦退出main协程,其他协程也会被销毁(在销毁前还来不及执行,因为需要一些时间给GMP调度)原创 2023-08-31 16:36:34 · 1076 阅读 · 0 评论 -
错误与异常处理
因为 error 接口有一个 Error 方法,当我们实现这个方法时候,实际上也就是实现了这个接口,也就是说自己的这个 struct 也成为了 error 接口。原创 2023-08-31 16:32:25 · 105 阅读 · 0 评论 -
go中的结构体
以学生结构体为例,如下:同类型的可以写在一行:结构体初始化方法1:使用var关键字方法2:使用值或键值对初始化方法2.1:使用值初始化写法如果{}在一行,逗号可以省略s:=Student{"cc",18}方法2.2:使用键值对初始化写法方法2.3:对结构体指针进行键值对初始化demo:方法3:给结构体成员赋值的方式进行初始化demo匿名结构体与结构体的匿名字段在一些临时数据结构等场景下可以使用匿名结构体输出结果:struct { Name str原创 2023-08-31 16:31:12 · 694 阅读 · 0 评论 -
go中的切片
*切片定义的几种方式数组和切片区别:使用数组传参是值传递,而使用切片传参是引用传递数组定义好长度之后不可修改,而切片可以理解为动态数组,长度可修改*///方法1:直接创建//方法2:使用make定义,但是需要加上长度,cap可加可不加s2 := make([]string, 3) //s2:=make([]string, 3,5) 加cap写法//方法3:数组变切片//方法4:new//fmt.Println(len(s4)) //没有长度。原创 2023-08-31 16:30:09 · 1168 阅读 · 0 评论 -
go中的数组
go语言中函数传递参数的时候,数组作为参数,实际调用的时候是值传递,而python C C++等语言是引用传递。原创 2023-08-31 16:29:31 · 69 阅读 · 0 评论 -
go中的函数
import ("errors""fmt"/*函数的用法跟其他语言的区别:支持多个返回值*///函数定义方法1//函数定义方法2return sun//函数定义方法3:返回多个值err = errors.New("除数不能为0")} else {if err!原创 2023-08-30 15:55:28 · 811 阅读 · 0 评论 -
字符串操作
字符串是utf-8字符的一个序列,当字符为ascii码时占用1个字节,其他字符则根据需要占用2-4个字节。go中字符串和c++、java、python不同(java始终占用2个字节),而同时根据需要占用1-4个字节。字符串是值类型,且值不可变,就是创建完某个文本后你无法再次修改这个文本的内容。字符串中的某个字符元素可以通过索引获取,如下:字符串str的第一个元素:str[0]第i个元素:str[i-1]最后一个元素:str[len(str)-1]原创 2023-08-30 15:54:19 · 131 阅读 · 0 评论