首页 > 其他分享 >go的一些坑。。。

go的一些坑。。。

时间:2022-10-23 15:22:23浏览次数:39  
标签:map value 切片 go 一些 底层 结构

1. 函数A把切片作为参数传入函数B

由于切片的底层是结构体,这种传参表面是切片引用,本质却是结构体的值传递,因此如果B内部对切片进行重新赋值或扩容,会导致B中切片的底层数组指针变化,而A中的切片还是原来的底层数组。

2. map的value存放结构体

map的value可以直接存放结构体,但是不能用map[key].field = 1这种方式更新字段值。

因为 go中的 map 的 value 本身是不可寻址的, map 的扩容的时候,可能要做键值对迁移。

解决办法:value存放结构体指针;或者重新赋值整个结构体。

3. goroutine导致的内存泄露

协程永远阻塞在chan的读写上无法退出。

可以通过context.Done配合cancel解决

4. 全局变量使用不恰当导致内存浪费

本该被回收的对象无意间被全局变量引用,内存空间得不到释放。

标签:map,value,切片,go,一些,底层,结构
From: https://www.cnblogs.com/gcr277/p/16818295.html

相关文章

  • 关于字典和集合顺序的一些思考
    要探究这个问题,首先需要明白,字典和集合的底层逻辑都是哈希表。那先来复习一下什么叫哈希表哈希表哈希(hash)hash,意译为散列,音译为哈希。是把任意长度的输入通过特定的算......
  • go gin 获取 参数
      post             get  ......
  • 图上的一些问题
    欧拉路径与欧拉回路1.无向图的欧拉路径在一张无向图\(G\)中,存在一条路径可以不重复地经过每一条边。2.欧拉回路欧拉回路是一条特殊的欧拉路径,起点和终点重合。3.无......
  • go mux实现rest api
    :30·字数:675·阅读:10012一个使用github.com/gorilla/mux实现RESTAPIService的例子,主要内容包括:GET/POST方法,如何接收path参数,query参数,以及POSTbody参数如何设置返回......
  • 记录安装mysql中的一些坑
    5.6版本一下,初始化。不要加参数--initinizie进入后可以直接进行修改密码。第二注意client和mysqld的sock文件必须指定同一个文件夹。第一步下载mysql安装包第二步解压......
  • 安装nginx中的一些坑
    这个问题是openssl的问题。解决问题的网址:https://blog.csdn.net/qq_39720249/article/details/84655501一些小问题。通过注释源文件......
  • Django入门到入土
    Django-前期初识Django-入门Django-静态文件配置,链接数据库,request对象方法解决django.core.exceptions.ImproperlyConfigured:RequestedsettingLOGGING_CONFIG,but......
  • Django-ORM常用字段及参数
     目录-常用字段--内容--自定义字段-字段参数--普通---null---unique---db_index---default--DateField和DateTimeField---auto_now_add---auto_now--关系......
  • Django-静态文件配置,链接数据库,request对象方法
    目录-静态文件配置--含义--配置方法--动态解析---含义---实现---示例-pycharm链接MySQL-Django链接MySQL--代码配置--代码声明-request对象常用方法--示例......
  • 解决django.core.exceptions.ImproperlyConfigured: Requested setting LOGGING_CONFI
    在开发Django项目时,调整了django文件目录结构同时配置完自己的配置文件路径后在终端执行pythonmanage.pyrunserver命令启动django项目时,报以下错误:django.core.ex......