![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
go
文章平均质量分 72
phone1126
这个作者很懒,什么都没留下…
展开
-
Golang结构体类型的深浅拷贝
Golang结构体类型的深浅拷贝 1、浅拷贝 2、深拷贝 3、结构体的深拷贝 4、结构体的浅拷贝 5、结构体值类型的浅拷贝 6、结构体引用类型的浅拷贝 7、结构体引用类型的深拷贝 在开发中会经常的把一个变量复制给另一个变量,有时候为了不让对象直接相互干扰,我们需要深度赋值对象那么这个过程,可能涉及到深浅拷贝1、浅拷贝浅拷贝是指对地址的拷贝浅拷贝的是数据地址,只复制指向的对象的指针,此时新对象和老对象指向的内存地址是一样的,新对象值修改时老对象也会转载 2022-05-21 22:41:25 · 4191 阅读 · 0 评论 -
map使用及底层实现
1. map的使用 golang中的map是一种数据类型,将键与值绑定到一起,底层是用哈希表实现的,可以快速的通过键找到对应的值。 类型表示:map[keyType][valueType]key一定要是可比较的类型(可以理解为支持==的操作),value可以是任意类型。 初始化:map只能使用make来初始化,声明的时候默认为一个为nil的map,此时进行取值,返回的是对应类型的零值(不存在也是返回零值)。添加元素无任何意义,还会导致运行时错误。向未初始化的map赋值引起 panic:..转载 2022-05-21 17:59:04 · 1777 阅读 · 0 评论 -
golang内存分配原理 与make和new的区别
Go语言内置运行时(就是runtime),不同于传统的内存分配方式,go为自主管理,最开始是基于tcmalloc架构,后面逐步迭新。自主管理可实现更好的内存使用模式,如内存池、预分配等,从而避免了系统调用所带来的性能问题。1. 基本策略每次从操作系统申请一大块内存,然后将其按特定大小分成小块,构成链表(组织方式是一个单链表数组,数组的每个元素是一个单链表,链表中的每个元素具有相同的大小。); 为对象分配内存时从大小合适的链表提取一小块,避免每次都向操作系统申请内存,减少系统调用。 回收对..转载 2022-05-18 18:43:49 · 865 阅读 · 0 评论 -
go Replace
strings包:import "strings"func Replace(s, old, new string, n int) string在原s字符串中,把old字符串替换为new字符串,n表示替换的次数,小于0表示全部替换//替换两次fmt.Println(strings.Replace("oooh oooh oooh", "h", "pp", 2)) //全部替换fmt.Println(strings.Replace("oooh oooh oooh", "ooh", "k",原创 2022-05-14 18:45:56 · 775 阅读 · 0 评论 -
struct{} 空结构体
背景原理解密定义的各种姿势`struct {}` 作为 receiver配合使用姿势`map` & `struct{}``chan` & `struct{}``slice` & `struct{}`总结背景golang 正常的 struct 就是普通的一个内存块,必定是占用一小块内存的,并且结构体的大小是要经过边界,长度的对齐的,但是“空结构体”是不占内存的,size 为 0;提示:以下都是基于 go1.13.3 linux/amd64 分转载 2022-05-12 01:07:38 · 965 阅读 · 0 评论 -
Go实现bitmap算法
有关bitmap算法的介绍资料网上很多,这里不赘述,各种语言的实现也不少,但是Go语言版的bitmap不多,本文就来写一个Go版的bitmap实现。首先创建一个bitmap.go 文件,定义一个bitmap结构体,再提供一些操作方法。详细代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 .转载 2021-12-05 18:13:45 · 651 阅读 · 0 评论 -
go time.Timer定时器
定时器:time.TimerTimer是一个定时器。代表未来的一个单一事件,你可以告诉timer你要等待多长时间。type Timer struct { C <-chan Time r runtimeTimer}它提供一个channel,在定时时间到达之前,没有数据写入timer.C会一直阻塞。直到定时时间到,向channel写入值,阻塞解除,可以从中读取数据。示例代码:package mainimport ( "fmt" "time")转载 2021-11-27 17:16:33 · 605 阅读 · 0 评论 -
go --timer
定时器是什么Golang 原生 time 包下可以用来执行一些定时任务或者是周期性的任务的一个工具本文基于 Go 1.14,如果以下文章有哪里不对或者问题的地方,欢迎讨论学习定时器的日常使用Timer 相关func NewTimer(d Duration) *Timerfunc (t *Timer) Reset(d Duration) boolfunc (t *Timer) Stop() boolfunc After(d Duration) <-chan Timefu转载 2021-11-27 17:12:06 · 372 阅读 · 0 评论 -
mmap接口原理详解,mmap使用详解
mmap基础概念 mmap内存映射原理 mmap和常规文件操作的区别 mmap优点总结 mmap相关函数 mmap使用细节回到顶部mmap基础概念mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页面到对应的文件磁盘上,即完成了对文件的操作而不必再调用read,write等系统调用函数。相反,内核空间对这段区域的转载 2021-11-01 15:14:56 · 728 阅读 · 0 评论 -
Linux环境变量配置的三个方法--/etc/profile,~/.bashrc,shell
环境配置的原因:在windows系统下,很多软件的安装都需要设置环境变量,比如安装JAVA JDK。如果不安装环境变量,在非软件安装的目录下运行javac命令,将会报告“找不到文件”类似的错误。那么,什么是环境变量呢?简要的说,就是指定一个目录,运行软件的时候,相关的程序将会按照该目录寻找相关文件。设置变量对于一般人最实用的功能就是:不用拷贝某些dll文件到系统目录中了,而path这一系统变量就是系统搜索dll文件的一系列路径;在linux系统下,如果你下载并安装了应用程序,很有可能在键入它的名称时原创 2021-10-12 19:04:22 · 12953 阅读 · 0 评论 -
Go编译 报错 link: running gcc failed: exit status 1
running gcc failed:解决方案:缺少gcc:安装一下:yum install glibc-static更新一下软件:yum install binutils原创 2021-10-12 14:35:47 · 4072 阅读 · 4 评论 -
exec: gcc: executable file not found in %PATH% 报错 Windows环境golang程序开发
这个就是一个缺少gcc编译器的报错而已,只需要下载正确的程序包安装配置好即可1.打开 mingw-w64官网,并点击download跳转到下载页面2.选择我们的windows版本安装包,并点击对应连接查看信息3.点击进入包下载界面,会自动下载的4.打开程序包安装5.正确选择自己环境的配置,然后下一步6.选择安装路径,并记下自己的安装路径,因为我们一会儿还需要配置环境变量然后下一步开始安装7.到这里我们的安装已经安装,下一步配置环...转载 2021-09-29 15:50:54 · 1122 阅读 · 0 评论