当前位置: 首页 > wzjs >正文

衡阳网站建设衡阳千度网络市场营销策略论文参考文献

衡阳网站建设衡阳千度网络,市场营销策略论文参考文献,苏州网站创建,做论坛推广的网站每日八股-5.31 Go1.切片是值传递还是引用传递?2.切片的深拷贝与浅拷贝3.切片的底层实现4.切片的扩容机制5.Map是线程安全的吗?6.哪些类型可以作为map的key?7.Map删除一个key内存是否会释放?8.Map为什么是无序的?9.如何…

每日八股-5.31

  • Go
    • 1.切片是值传递还是引用传递?
    • 2.切片的深拷贝与浅拷贝
    • 3.切片的底层实现
    • 4.切片的扩容机制
    • 5.Map是线程安全的吗?
    • 6.哪些类型可以作为map的key?
    • 7.Map删除一个key内存是否会释放?
    • 8.Map为什么是无序的?
    • 9.如何顺序读写map?
    • 10.Map的底层实现
    • 11.Struct是否可以进行比较
    • 12.Rune和Byte的区别

Go

1.切片是值传递还是引用传递?

在go语言中,所有的传参都是值传递,切片也不例外,但切片是引用类型,因为切片的底层实现包括一个指针,用来指向当前数组的起始位置,长度,以及容量;当在函数内部对切片进行修改时,外部的切片也会受到影响;而在函数内部使用append增加元素时,外部的元素不会受到影响,所以说我们在实践中都是让append后的切片赋值给原切片。

补充:
引用类型:slice、map、channel、pointer
非引用类型:int、string、struct

2.切片的深拷贝与浅拷贝

假设我们现在有一个切片s1,如果用:=的形式让s2:=s1,那么这就是浅拷贝,他们的指针指向同一个地址,修改任意一个都会影响另一个,如果说我们用copy()的话,那么s1和s2底层的指针指向两个完全不同的地址,修改一个对另一个不会造成任何影响,这就是深拷贝。

3.切片的底层实现

切片的数据结构是一个结构体,包括三个参数Pointer,len,cap
其中Pointer指向数组中要表示的片段的起始元素;
len表示当前切片包含多少个元素;
cap表示当前切片最大可以容纳多少个元素;

type slice struct {array unsafe.Pointerlen   intcap   int
}

4.切片的扩容机制

go1.18之后的扩容机制,有一个阈值256
如果当前要扩容的容量大于旧容量的2倍,那么直接扩容为新的容量
如果当前要扩容的容量小于阈值,那么扩容为旧容量的二倍
如果当前要扩容的容量大于阈值,那么新容量为旧容量加上(旧容量加三倍的阈值)/4
在这里插入图片描述

5.Map是线程安全的吗?

线程安全指的是在并发场景或多个goroutine同时操作一个对象,执行的结果依然是正确的。对于map来说,并发读是安全的,但是并发读写是不安全的,会造成不可预测的结果,程序会抛出fatal Error:concurrent map write

6.哪些类型可以作为map的key?

只要是可比较的类型都可以作为map的key,比如int,string,bool,interface,struct,指针,channel等,不可比较的类型就无法作为map的key,比如slice,map,函数。

但是如果interface或struct里包括了不可比较的类型,那么也不能作为map的key
channel和指针是可比较的引用类型(和前面提到的引用类型非引用类型对比记忆)

7.Map删除一个key内存是否会释放?

Map删除一个key后,对应的key-value将不复存在,但对应的内存不会立即释放,会有GC(垃圾回收器)负责释放这部分内存。如果没有别的对象引用该value,这部分内存最终会由GC释放。

8.Map为什么是无序的?

因为在go的底层map的实现是一个哈希表,当要往map里面存储新的元素时,会为每一个键计算一个哈希值,而这个哈希值在内存中不一定是连续的;另外当map进行扩容时,所有在map中存储的元素都会重新计算一遍哈希值,所以多次遍历同一个map,结果不一定是相同的。

9.如何顺序读写map?

创建一个切片,遍历map的时候把键存储到切片中,然后对该切片进行排序,遍历该切片,就可以实现顺序输出map。

10.Map的底层实现

type hmap struct {count      int            // 元素个数,调用len(map)返回这个值B          uint8          // bucket数量是2^Bhash0      uint32         // hash seed,用于在计算哈希值时引入随机性buckets    unsafe.Pointer // 指向bucket数组的指针(存储key val);大小:2^Boldbuckets unsafe.Pointer // 扩容时,buckets 长度是 oldbuckets 的两倍// ...
}
type bmap struct {topbits  [8]uint8     // 这是一个长度为8的字节数组。对于存储在桶中的每个键,它会保存该键哈希值的高8位(top hash bits)。这是一种优化,可以在查找时快速比较,而不用立即比较完整的键,从而提高效率keys     [8]keytype   // 存储key的数组values   [8]valuetype // 存储val的数组overflow uintptr      // 指向“溢出桶”的指针。如果一个桶存满了8个键值对,后续哈希到这个桶的新键值对就会存放到溢出桶中
}

11.Struct是否可以进行比较

只要结构体内的数据类型是可以比较的,那么结构体就可以进行比较。可比较的数据类型包括基本数据类型(如int,float,string)和指针、channel等,可以使用reflect.DeepEqual()来对两个结构体进行比较,该结构体会递归的比较结构体内部的数据类型。

12.Rune和Byte的区别

rune和byte都是go语言中的字符类型,总的来说就是rune表示的范围更大。byte其实是uint8类型,它用来表示单个ascii码字符;rune是int32类型,它可以用来表示unicode字符或者utf-8字符,如果我们需要切割的字符串中有中文,我们需要把它转化为[]rune数组,而不是[]byte数组

package mainimport "fmt"func main() {strs := "go语言"fmt.Println(string([]byte(strs)[0:3])) // 输出:go�fmt.Println(string([]rune(strs)[0:3])) // 输出:go语
}

文章转载自:

http://YpGJSf7J.cwpny.cn
http://FGfUvfQP.cwpny.cn
http://4LqVYpfU.cwpny.cn
http://pwzL9mk2.cwpny.cn
http://NQjxXkAZ.cwpny.cn
http://U7pN6tAR.cwpny.cn
http://Wp3P5eOF.cwpny.cn
http://IcW965te.cwpny.cn
http://wD2ePdq0.cwpny.cn
http://FqXIcXXb.cwpny.cn
http://lyCLcOAp.cwpny.cn
http://P7e7GpUZ.cwpny.cn
http://HJ5TJ1w0.cwpny.cn
http://D5XUKeL5.cwpny.cn
http://6MQURC4Y.cwpny.cn
http://ezwhoO4m.cwpny.cn
http://fl94tmaB.cwpny.cn
http://Uyg0WoFs.cwpny.cn
http://du3rXY61.cwpny.cn
http://XsLiOTJ0.cwpny.cn
http://7tCd24t6.cwpny.cn
http://PJ5eNdLJ.cwpny.cn
http://74rVV5Tc.cwpny.cn
http://os1HNTYe.cwpny.cn
http://EMoOtRjU.cwpny.cn
http://UFbD9dCn.cwpny.cn
http://Dpep4eWX.cwpny.cn
http://l0fnKHBl.cwpny.cn
http://sJ6GInI0.cwpny.cn
http://f10L7GL6.cwpny.cn
http://www.dtcms.com/wzjs/682043.html

相关文章:

  • 沭阳哪里有做网站推广的企业网站后台管理
  • 找人做网站需要多少钱免费手机网页网站
  • 免费推广营销网站网站开发的开发意义
  • 中国网站建设网页设计企业vi设计策划书
  • 网站 字号 英文青岛自动seo
  • 企业网站模板免费公司网站首页如何做
  • 台州做微网站南昌住房和城乡建设部网站电话
  • 山东饰品行业网站制作网站建设 预付款
  • 旅游商城网站模板skycc营销软件
  • 网站域名申请蝴蝶传媒网站推广
  • 怎么做网站挣钱网页建站工具
  • 网站底部菜单企业产品推广策划方案
  • 专门做音箱的网站知名的wordpress模板
  • 广州建设营销型网站资讯网站排版
  • 如果使用自己电脑做网站网站建设需要很强的编程
  • 个人网站排版设计济南网站制作企业
  • 外贸怎么做网站网站编程设计如何写备注
  • 互联网网站备案流程简单网站建设软件有哪些
  • 阿里云clouder网站建设海口网站建设推广
  • 网站建设策划书附录常州网站支付通道建设
  • 门户网站建设的背景下载网站备案的核验单
  • 一级域名的免费网站微信小程序商城源码
  • 泰安网站建设哪里找做网销好的网站
  • 绍兴做网站比较专业的公司备案的时候网站建设方案书要吗
  • 阿里巴巴国际站工作怎么样广州小程序开发定胜
  • 南宁网站建设醉懂网络沧州网站建设刘磊
  • 怎么创建企业网站仿卢松松wordpress
  • 怎样用dw做新闻发布网站球场 技术支持 东莞网站建设
  • 网站开发需求文档prd模板网站代码模板免费
  • 做网站广告推广平台wordpress去掉页面中的标题