首页 > 其他分享 >go map中的slice

go map中的slice

时间:2023-07-27 15:01:09浏览次数:88  
标签:map slice ok mym go bool false

看以下代码:

func main() {
	mym := make(map[int32][]bool)
	slice, ok := mym[1]
	if !ok {
		slice = []bool{}
		mym[1] = slice
	}
	slice = append(slice, false)
	print(mym)
}

该无法无法往mym中插入数据,原因在于:

在该代码中,当将元素追加到slice中时,实际上是在更改slice变量所引用的底层数组。这并不会更改与map关联的底层数组,因为map中保存的是slice的副本,而不是slice所引用的底层数组的指针。

为了在map中更改slice,您需要直接修改map中保存的slice,而不是修改slice变量所引用的底层数组。您可以通过在map中保存slice的指针来实现这一点。

以下是一个示例代码,它演示了如何在map中更改slice

 

func main() {
    mym := make(map[int32]*[]bool)
    slice, ok := mym[1]
    if !ok {
        newSlice := []bool{}
        slice = &newSlice
        mym[1] = slice
    }
    *slice = append(*slice, false)
    fmt.Println(*mym[1]) // 输出:[false]
}

 

标签:map,slice,ok,mym,go,bool,false
From: https://www.cnblogs.com/zhanchenjin/p/17584957.html

相关文章

  • gorm使用Save方法处理时间字段的坑
    视频地址Gorm中Save方法处理时间字段的坑测试代码以及说明packagegorm_testsimport("fmt""github.com/stretchr/testify/require""gorm.io/driver/mysql""gorm.io/gorm""testing""time")const......
  • vtkMapper 以及其方法 SetInputData SetInputConnection SetSourceConnection
    vtkMappe及其派生类,负责把输入数据转换为图元(例如显示为点、显示为线、显示为面等)。该类存储需要渲染的数据,以及一些渲染配置。我们经常看到的vtkActor->SetMapper(mapper),含义就是把负责提供图元数据的mapper连接到渲染引擎actor。vtkMapper的重要渲染配置1.选择使用顶点进行渲......
  • 【go语言】2.1.3 函数的定义和使用
    在Go语言中,函数是一种代码抽象和复用的方式。函数可以接受参数,执行特定的操作,并返回结果。函数的定义函数的定义以 func 关键字开始,后面跟着函数名、参数列表、返回值列表(可选)以及函数体。下面是一个函数定义的例子:funcgreet(namestring){fmt.Println("Hello,"+......
  • go语言获取用户ip
    Go语言获取用户IP作为一名经验丰富的开发者,我将帮助你了解如何使用Go语言获取用户的IP地址。下面将展示整个过程的步骤,并为每个步骤提供相应的代码和注释。步骤概览步骤描述1导入必要的库2创建HTTP请求处理函数3解析请求中的IP地址4输出IP地址信息代......
  • goole-java-format
    使用GoogleJavaFormat概述在本文中,我将教会你如何使用GoogleJavaFormat。GoogleJavaFormat是一个用于自动格式化Java代码的工具,可以帮助开发者编写符合Google代码风格指南的代码。通过使用GoogleJavaFormat,你可以减少手动调整代码格式的工作量,提高代码的可读性和一致性。......
  • Go语言网络编程示例
    1.简单示例以下是一个使用Go语言标准库net实现的简单的客户端和服务器端示例。服务器端监听本地的8080端口,并在接收到客户端连接后,向客户端发送一条欢迎消息。客户端通过Dial方法连接服务器,并接收服务器发送的欢迎消息。服务器端代码:packagemainimport("......
  • 在GO语言中项目中使用zap日志库
    在GO语言中项目中使用zap日志库本文先介绍了GO语言中原生的日志库中使用,然后想继续介绍了非常流行的Uber开源的zap日志库,同时介绍了如何搭配Lumberjack实现日志的切割和归档。在GO语言项目中使用zap日志库介绍在许多go语言项目中,我们需要一个好的日志记录器能够提供下面这些功......
  • go基础-依赖管理
    有些不可思议,简洁、优雅的go语言依赖管理如此混乱,发布多年也没有可靠的依赖管理机制,官方先后推出了多种依赖管理机制gopath、vender、dep等,没有一个顺手,直到在Go1.11推出gomod才有所缓解,也谈不上优秀,相比maven弱爆了。主流语言都有官方依赖包站点,如maven、pip、npm等。奇葩的是......
  • go语言基础一(包、变量和函数)
    包go程序由一个个不同的包组成,程序的入口是名为main的包,比如我们创建一个main文件main.gopackagemainimport"fmt"funcmain(){fmt.Println("hello")}go要求每一个go文件的非注释开头必须是```packagexxx``,也就是声明该文件属于哪个包导出方式首先我们创如下......
  • Go语言初始化数组的方式
    在Go语言中,数组的初始化有多种方法,我会一一为你列举如下:基本初始化:可以在声明数组时直接指定元素的初始值,由编译器自动推断数组的长度。//方法1:使用数组字面值初始化arr1:=[3]int{1,2,3}//方法2:使用自动推断数组长度arr2:=[...]int{4,5,6}指定索引初始化:可......