
Golang知识点
文章平均质量分 74
一些Golang相关的知识点
mashiro0w0
这个作者很懒,什么都没留下…
展开
-
Go中的类型推断
Go语言中对变量使用简单的类型推断,给人以编写动态类型代码的感觉,同时仍然具有静态类型的安全性。但是,下面的代码是错误的,即a的值已被推断为整数,而1.1为浮点数,不能将a强制转换为浮点数,相加失败。由于Go语言的类型系统禁止了不同类型之间的转换(第4章中的常量除外),因此下例中的a已经被推断为int类型,不能够赋值给int64类型。Go语言的类型推断在处理包含变量标识符的推断方面是半智能的。因此在设计go语言中,对变量使用简单的类型推断,给人以编写动态类型代码的感觉,同时仍然保留静态类型的好处。原创 2024-07-03 15:42:38 · 493 阅读 · 0 评论 -
Go中float浮点型
小数部分,让小数部分乘以2,结果小于1则将结果继续乘以2,结果大于1则讲结果-1继续乘以2,结果等于1则结束。float类型,计算机中小数的非精确的表示方式,如:`3.14``以float32为例来进行存储,用32位来存储浮点型。,也就意味着可以表示的范围更大了。float32(单精度浮点数)float64(双精度浮点数)原创 2024-04-23 19:02:49 · 556 阅读 · 0 评论 -
Go中Map底层原理剖析
首先,我们要知道如果翻倍扩容(数据总个数 / 桶个数 > 6.5),则新桶个数是旧桶的2倍,即:map中的B的值要+1(因为桶的个数等于。如果是翻倍扩容,那么迁移规就是将旧桶中的数据分流至新的两个桶中(比例不定),并且桶编号的位置为:同编号位置 和 翻倍后对应编号位置。这种扩容和迁移的意义在于:当溢出桶比较多而每个桶中的数据又不多时,可以通过等量扩容和迁移让数据更紧凑,从而减少溢出桶。如果是等量扩容(溢出桶太多引发的扩容),那么数据迁移机制就会比较简单,就是将旧桶(含溢出桶)中的值迁移到新桶中。原创 2024-04-25 17:00:57 · 1427 阅读 · 1 评论 -
Go中的变量逃逸
堆和栈各有优缺点,该怎么在编程中处理这个问题呢?在C/C++语言中,需要开发者自己学习如何进行内存分配,选用怎样的内存分配方式来适应不同的算法需求。比如,函数局部变量尽量使用栈;全局变量、结构体成员使用堆分配等。程序员不得不花费很多年的时间在不同的项目中学习、记忆这些概念并加以实践和使用。Go语言将这个过程整合到编译器中,命名为“变量逃逸分析”。这个技术由编译器分析代码的特征和代码生命期,决定应该如何堆还是栈进行内存分配,即使程序员使用Go语言完成了整个工程后也不会感受到这个过程。原创 2024-04-20 16:35:06 · 605 阅读 · 0 评论 -
字典类型(map)
以上只是基本的存储类型,而各个编程语言中的字典都会在此基础上进行相应的修改和优化(想了解更多的可以看一下GO中map底层实现机制)这种结果之所以块,是因为根据key可以直接找到数据存放的位置;而其他的数据类型是需要从前到后去逐一比对,相对来说比较耗时。这种类型最大的特点就是查找速度非常快,因为他的底层存储就是基于哈希表存储的(不同语言还会有一些差异)。注意:键不重复&键必须可哈希(int/bool/float/string/array)前提:键不重复 &键必须可哈希。原创 2024-04-26 10:38:06 · 541 阅读 · 1 评论 -
Go中字符串
Go语言中的字符串是utf-8编码的序列。原创 2024-04-24 14:48:41 · 341 阅读 · 0 评论 -
Go中的管道(channel)
(1)管道本质就是一个数据结构-队列(2)数据是先进先出(3)自身线程安全,多协程访问时,不需要加锁,channel本身就是线程安全的(4)管道有类型的,一个string的管道只能存放string类型数据var 变量名 chan 数据类型PS1:chan管道关键字PS2:数据类型指的是管道的类型,里面放入数据的类型,管道是有类型的,int类型的管道只能写入整数intPS3:管道是引用类型,必须初始化才能写入数据,即make后才能使用import("fmt"原创 2024-04-28 20:45:52 · 1003 阅读 · 0 评论