go sync.Map包装过的对象nil值的判断

news2025/1/10 20:38:13

被sync.Map包装过的nil 对象,是不能直接用if xxx == nil的方式来判断的

func testnil() *interface{} {
	return nil
}

func main() {
	var ptr *interface{}
	test := testnil()

	//p = &Person{}
	fmt.Printf("ptr 的值为 : %v\n", ptr)
	fmt.Printf("ptr 的值为 : %#v\n", ptr)
	println(ptr == nil)
	println(test == nil)
	var testany *interface{}
	println(test == testany)

	var maptest sync.Map
	maptest.Store("a", test)
	test3, _ := maptest.Load("a")
	println(test3 == nil)
	println(test == testany)

	//s := &Person{
	//	name: "1",
	//}
	//
	//ss := (*any)(s)
}

结果:

ptr 的值为 : <nil>
ptr 的值为 : (*interface {})(nil)
true
true
true
false
true

断点截图:
在这里插入图片描述
map load的源码:
在这里插入图片描述

maptest.Store(“a”, test)设置进去的是*interface{},但是取出来的其实是interface{}|interface{},说明被包装了一层,相当于返回一个对象,对象内容是interface{},所以不能直接和nil做比较。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1030699.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

控价与数据分析的关系

品牌在做线上控价时&#xff0c;会面对许多的数据&#xff0c;如店铺数据、行业数据&#xff0c;当这些数据仅仅只是拿来做监测低价输出低价报表使用&#xff0c;是没有发挥其最大作用的&#xff0c;因为商品链接的字段较丰富&#xff0c;涉及的内容会包含销量、评价量、促销信…

pytorch环境搭建到pycharm项目映射配置(成功后回顾性记录/自用)

利用Anaconda创建pytorch虚拟环境 前提&#xff1a;成功安装Anaconda&#xff0c;确保可以打开NVIDIA控制面板 开始-》搜索“Anaconda Prompt” 打开后输入&#xff1a;conda create -n 你的虚拟环境名 python3.9。输入y&#xff0c;继续安装&#xff0c;完成。 输入&#…

容器适配器

除了顺序容器外&#xff0c;标准库还定义了三个顺序容器适配器&#xff1a;stack、queue和priority_queue适配器。适配器是标准库中的一个通用概念。容器、迭代器和函数都有适配器。适配器本质上是一种机制&#xff0c;能使某种事物的行为看起来像另外一种事物一样。 所有容器…

C++笔记之尾置返回类型(trailing return type)

C笔记之尾置返回类型(trailing return type) 文章目录 C笔记之尾置返回类型(trailing return type)1.尾置返回类型的一些示例用法2.尾置返回类型对泛型编程的好处3.尾置返回类型通常在以下情况下派上用场4.既然auto可以自动类型推断&#xff0c;那为什么还需要尾置返回类型&…

微调大型语言模型(一):为什么要微调(Why finetune)?

今天我们来学习Deeplearning的在线课程 微调大型语言模型(一)的第一课&#xff1a;为什么要微调(Why finetune)。 我们知道像GPT-3.5这样的大型语言模型(LLM)它所学到的知识截止到2021年9月&#xff0c;那么如果我们向ChatGPT询问2022年以后发生的事情&#xff0c;它可能会产生…

K8S-Pod 进阶

Pod 进阶 一、资源限制&#xff08;业务cpu 内存&#xff09;1.定义2.Pod 和 容器 的资源请求和限制3.CPU 资源单位4.内存 资源单位5.示例 二、健康检查&#xff1a;又称为探针&#xff08;Probe&#xff09;1.定义2.探针的三种规则&#xff1a;3.Probe支持三种检查方法4.示例 …

一位autosar开源爱好者(非本博主)

https://github.com/autoashttps://github.com/autoas该爱好者 Email&#xff1a; paraifoxmail.com 另外在https://club.rt-thread.org/ask/question/a124ee65268bed5f.html 汽车电子嵌入式操作系统符合Autosar规范的静态os&#xff1a;GaInOS 发布于 2013-01-03 22:09:11 …

vite + vue3 + js 搭建组件库 + 核心配置与使用

vite.config.js 这个官网有写 import { defineConfig } from vite import vue from vitejs/plugin-vue import path from "path" // https://vitejs.dev/config/ export default defineConfig({plugins: [vue()],server:{open:true, //自动打开浏览port:8088 //默认…

「大数据-0」虚拟机VMware安装、配置、使用、创建大数据集群教程

目录 一、下载VMware Wworkstation Pro 16 二、安装VMware Wworkstation Pro 16 三、检查与设置VMware的网卡 1. 检查 2. 设置VMware网段 四、在VMware上安装Linux虚拟机 五、对安装好的虚拟机进行设置 1. 打开设置 2. 设置中文 3. 修改字体大小 4. 修改终端字体大小 5. 关闭虚…

机器学习(18)---朴素贝叶斯

朴素贝叶斯 一、概述1.1 概率分类器1.2 贝叶斯工作原理1.3 贝叶斯的性质 二、sklearn中的朴素贝叶斯2.1 贝叶斯分类器2.2 高斯朴素贝叶斯GaussianNB2.3 探索贝叶斯&#xff1a;高斯朴素贝叶斯擅长的数据集2.4 探索贝叶斯&#xff1a;高斯朴素贝叶斯的拟合效果与运算速度 一、概…

Three.js 实现导出模型文件(.glb,.gltf)功能 GLTFExporter

Three.js提供了导出&#xff08;.glb,.gltf&#xff09;文件的API GLTFExporter 用于实现场景内容导出模型文件的功能 导出模型文件主要使用 parse 方法&#xff0c;该方法接收三个参数&#xff1a; 1.scene&#xff1a;要导出的场景对象。 2.onComplete&#xff1a;解析完成…

Deformable DETR(2020 ICLR)

Deformable DETR&#xff08;2020 ICLR&#xff09; detr训练epochs缩小十倍&#xff0c;小目标性能更好 Deformable attention 结合变形卷积的稀疏空间采样和Transformer的关系建模能力 使用多层级特征层特征,不需要使用FPN的设计&#xff08;直接使用backbone多层级输出&a…

cgroup version jdk version k8s

bug info: in centos, linux 3.10, cgroup:v1, service works well. in ubuntu 22.04 LTS, linux 5, systemd:v2, service is always crash on boot, or running some minutes then killed by OOM. deploy.yaml文件相关内容: specify limits:memory 1000M in yaml, killed …

区域气象-大气化学在线耦合模式(WRFChem)在大气环境领域实践技术应用

随着我国经济快速发展&#xff0c;我国面临着日益严重的大气污染问题。近年来&#xff0c;严重的大气污染问题已经明显影响国计民生&#xff0c;引起政府、学界和人们越来越多的关注。大气污染是工农业生产、生活、交通、城市化等方面人为活动的综合结果&#xff0c;同时气象因…

Redis缓存相关问题

目录 缓存穿透 缓存雪崩 缓存击穿 Redis集群方案 主从复制Replication 哨兵sentinel 高可用介绍 Redis sentinel介绍 Redis sentinel使用 配置sentinel 启动sentinel 测试sentinel Redis内置集群cluster Redis cluster介绍 哈希槽方式分配数据 Redis cluster的…

ubuntu18.04 编译edk2项目下的intel架构bios

看了国内的edk2编译文章. 大不部分都是编译 用于虚拟机(qemu)或者模拟器上运行的 很少有编译edk2项目 出 真机的 bios 希望本文章对你有帮助, 请注意 github,com因为被墙了. 所有需要用gitee代替 参考来源 https://gitee.com/binout/edk2-platforms/tree/master https:/…

PHP8的类与对象的基本操作之类常量-PHP8知识详解

php 8引入了一种新的特性&#xff0c;称为类常量&#xff08;class Constants&#xff09;。类常量是在类中定义的常量&#xff0c;类似于全局常量&#xff0c;但作用域仅限于定义它们的类。 在PHP 8中&#xff0c;类常量的作用域被限制在定义它们的类中。这意味着只有类的成员…

【配电变电站的最佳位置和容量】基于遗传算法的最优配电变电站放置(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

uploadifive上传工具php版使用

uploadifive自带的DEMO文件。 下载地址&#xff1a; http://www.uploadify.com/download/ <!DOCTYPE HTML> <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"> <title>UploadiFive Test&…

C4BUILDER—用于构建C4模型图的Web项目

c4builder是什么&#xff1f; c4builder&#xff1a; 字面理解是产生C4架构图的构建器。 c4builder是一个轻量级的nodejscli工具&#xff0c;用于仅使用文本构建、维护和共享软件体系结构项目。 c4builder是一种架构设计工具&#xff0c;可以帮助开发人员和架构师描述和可视化…