context上下文(一)

创建一个基础的context

使用BackGround函数,BackGround函数原型如下:
func Background() Context {return backgroundCtx{}
}

作用:Background 函数用于创建一个空的 context.Context 对象。

context.Background() 函数用于获取一个空的 context.Context 对象。这个对象没有设置任何的截止时间(deadline),也没有取消通道(cancelation signal),并且不包含任何键值对(values)。它通常被用作根 context,即在开始一个新的 goroutine 或启动一个新的操作时,如果没有更具体的 context 可用,就可以使用 context.Background() 获取的 context

ctx := context.Background()                      //创建一个基础context

ctx的类型为:实现context.Context接口的类型
 

type Context interface {Deadline() (deadline time.Time, ok bool)Done() <-chan struct{}Err() errorValue(key any) any
}

使用WithValue向ctx添加键值对

//func WithValue(parent Context, key, val any) Context
ctx = context.WithValue(ctx, "userID", "123456")

定义一个函数,接收context参数

funcWithCtx := func(ctx context.Context) {//从context中检索值if value := ctx.Value("userID"); value != nil {fmt.Println("User ID from context", value)} else {fmt.Printf("No User ID from context")}}

因为Context接口类型中有Value(key any) any

通过传入的context对象中检索名为“userID”的值通过【通过键查找值】

完整代码

package mainimport ("context""fmt"
)func main() {//func Background() Contextctx := context.Background()                      //创建一个基础contextctx = context.WithValue(ctx, "userID", "123456") //使用WithValue向context中添加键值对//定义一个函数,接受一个context参数funcWithCtx := func(ctx context.Context) {//从context中检索值if value := ctx.Value("userID"); value != nil {fmt.Println("User ID from context", value)} else {fmt.Printf("No User ID from context")}}funcWithCtx(ctx) //调用函数,传递context
}

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

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

相关文章

Java中常见的设计模式

Java中常见的设计模式 Java 中有 23 种经典设计模式&#xff0c;通常被分为三大类&#xff1a;创建型、结构型和行为型。每个设计模式都解决了不同类型的设计问题。以下是几种常见设计模式的总结&#xff0c;并附带了实际应用场景、示例代码和详细的注释说明。 一、创建型设计…

责任链设计模式(单例+多例)

目录 1. 单例责任链 2. 多例责任链 核心区别对比 实际应用场景 单例实现 多例实现 初始化 初始化责任链 执行测试方法 欢迎关注我的博客&#xff01;26届java选手&#xff0c;一起加油&#x1f498;&#x1f4a6;&#x1f468;‍&#x1f393;&#x1f604;&#x1f602; 最近在…

springboot 处理编码的格式为opus的音频数据解决方案【java8】

opus编码的格式概念&#xff1a; Opus是一个有损声音编码的格式&#xff0c;由Xiph.Org基金会开发&#xff0c;之后由IETF&#xff08;互联网工程任务组&#xff09;进行标准化&#xff0c;目标是希望用单一格式包含声音和语音&#xff0c;取代Speex和Vorbis&#xff0c;且适用…

vue项目引入tailwindcss

vue3项目引入tailwindcss vue3 vite tailwindcss3 版本 初始化项目 npm create vitelatest --template vue cd vue npm install npm run dev安装tailwindcss3 和 postcss 引入 npm install -D tailwindcss3 postcss autoprefixer // 初始化引用 npx tailwindcss init -p…

Google ADK(Agent Development Kit)简要示例说明

一、环境准备与依赖安装 1.1 系统 硬件&#xff1a; GPU NVIDIA 3070加速模型推理&#xff0c;内存64GB软件&#xff1a; Python 3.11Docker 28.04&#xff08;用于容器化部署&#xff09;Kubernetes 1.25&#xff08;可选&#xff0c;用于集群管理&#xff09; 1.2 安装 A…

批量给文件编排序号,支持数字序号及时间日期序号编排文件

当我们需要对文件进行编号的时候&#xff0c;我们可以通过这个工具来帮我们完成&#xff0c;它可以支持从 001 到 100 甚至更多的数字序号编号。也可以支持按照日期、时间等方式对文件进行编号操作。这是一种操作简单&#xff0c;处理起来也非常的高效文件编排序号的方法。 工作…

【系统架构】AI时代下,系统架构师如何修炼

在AI时代,系统架构师的角色正经历深刻变革,需在技术深度、工具应用与思维模式上全面升级。以下结合行业趋势与实践建议,总结系统架构师的修炼路径: 一、掌握AI工具,重构工作流 自动化文档与设计 利用生成式AI(如DeepSeek、ChatGPT)完成70%的需求文档、接口设计及架构图生…

图像颜色空间对比(Opencv)

1. 颜色转换 import cv2 import matplotlib.pyplot as plotimg cv2.imread("tmp.jpg") img_r cv2.cvtColor(img, cv2.COLOR_BGR2RGB) img_g cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) img_h cv2.cvtColor(img, cv2.COLOR_BGR2HSV) img_l cv2.cvtColor(img, cv2.C…

JDBC驱动autosave缺陷的修复与配置指南

opengauss-jdbc-6.0.0.jar和opengauss-jdbc-6.0.0-og.jar版本修复了&#xff1a;autosavealways时&#xff0c;事务嵌套太深&#xff0c;导致栈溢出问题。如果使用的版本低于opengauss-jdbc-6.0.0版本&#xff0c;需要通过替换jdbc驱动和修改url参数来解决autosave缺陷。以下是…

K8S-证书过期更新

K8S证书过期问题 K8S证书过期处理方法 Unable to connect to the server: x509: certificate has expired or is not yet valid 1、查看证书有效期&#xff1a; # kubeadm certs check-expiration2、备份证书 # cp -rp /etc/kubernetes /etc/kubernetes.bak3、直接重建证书 …

2025 年网络安全终极指南

我们生活在一个科技已成为日常生活不可分割的一部分的时代。对数字世界的依赖性日益增强的也带来了更大的网络风险。 网络安全并不是IT专家的专属特权&#xff0c;而是所有用户的共同责任。通过简单的行动&#xff0c;我们可以保护我们的数据、隐私和财务&#xff0c;降低成为…

Python的那些事第四十九篇:基于Python的智能客服系统设计与实现

基于Python的智能客服系统设计与实现 摘要 随着人工智能技术的飞速发展,智能客服系统逐渐成为企业提升客户服务质量和效率的关键工具。本文详细介绍了基于Python的智能客服系统的设计与实现方案,涵盖了系统架构、核心功能、技术选型及优化建议,旨在为企业构建高效、智能的客…

第Y1周:调用YOLOv5官方权重进行检测

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 文章目录 1、前言2、下载源码3、运行代码 1、前言 YOLOv5分为YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x四个版本&#xff0c;这里以YOLOv5s为例。 2、下载源码 安…

Python小程序 - 文件处理3:正则表达式

正则表达式&#xff1a;文本年鉴表。遗留的问题很多。。。用AI再想想 需求&#xff1a;读入txt文件&#xff0c;过滤文件有关年记录 0&#xff09;读入txt文件 1&#xff09;以“。”&#xff0c;中文句号&#xff0c;为界区分一句&#xff0c;最小统计单位 2&#xff09;年格…

【antd + vue】Tree 树形控件:默认展开所有树节点 、点击文字可以“选中/取消选中”节点

一、defaultExpandAll 默认展开所有树节点 1、需求&#xff1a;默认展开所有树节点 2、问题&#xff1a; v-if"data.length"判断的层级不够&#xff0c;只判断到了物理那一层&#xff0c;所以只展开到那一层。 3、原因分析&#xff1a; 默认展开所有树节点, 如果是…

Notepad++安装Markdown实时预览插件

具体操作 打开notepad -> 插件 -> 插件管理 -> 可用 -> “Markdown Panel” -> 安装&#xff0c;安装完成后工具栏点击"Markdown Panel"按钮。 注意&#xff1a;由于网络等原因可能安装失败 导致工具栏没出现""Markdown Panel"按钮&am…

OpenHarmony如何编译安装系统应用(以settings设置为例)

开发环境 1.OpenHarmony 2.DevEco Studio 3 .Full Sdk 实现步骤 1.获取设置应用源码 https://gitee.com/openharmony/applications_settings/tree/OpenHarmony-v5.0.0-Release/ 2,使用 DevEco Studio 和 Full SDK对系统应用进行签名,默认工程是未配置签名的状态,所构建…

【ESP32-microros(vscode-Platformio)】

一、步骤 1、目前支持ESP32 2、同一个局域网 3、上位机要安装代理&#xff08;电脑或者linux设备&#xff09; 4、可直接通过USB下载&#xff0c;也可以使用官方烧录工具&#xff0c;具体的分区表地址要从USB烧录的时候日志查看&#xff0c;一共四个文件&#xff0c;第三个…

.NET MAUI教程2-利用.NET CommunityToolkit.Maui框架弹Toast

在上一篇博文的基础上继续操作&#xff1a; .NET MAUI教程1-入门并发布apk包安装到真机-CSDN博客 本文内容参考&#xff1a; Toast - .NET MAUI Community Toolkit - Community Toolkits for .NET | Microsoft Learn 1 在NuGet包管理器中安装 MAUI Community Toolkit&…

软件工程(应试版)图形工具总结(二)

遇到的问题,都有解决方案,希望我的博客能为你提供一点帮助。 教材参考《软件工程导论(第六版)》 七、 层次图(H图)与HIPO图 1、概述 1.1、层次图(Hierarchy Chart / H图) ​核心定义 ​目的:描述软件系统的层次结构,体现模块的从属关系。​适用阶段:自顶向下设计…