我的编程空间,编程开发者的网络收藏夹
学习永远不晚

GoFrame通用类型变量gvar与interface如何使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

GoFrame通用类型变量gvar与interface如何使用

本篇内容主要讲解“GoFrame通用类型变量gvar与interface如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“GoFrame通用类型变量gvar与interface如何使用”吧!

    通用变量 gvar

    gvar 通用动态变量,支持各种内置的数据类型转换,可以作为interface{}类型的替代数据类型,并且该类型支持并发安全开关。

    使用场景

    所有需要使用interface{}类型的场景够可以用gvar替代:

    • 各种不固定数据类型格式

    • 需要频繁对变量进行数据类型转换的场景。

    使用gvar代替interface{}很重要的一个原因是:gvar支持设置并发安全开关。

    看源码学编程

    如何设置并发安全开关呢?

    在初始化的时候,使用New()方法或者Create()方法,第二个参数就是设置并发安全开关的,默认为false。

    如果使用goland开发,是能看到参数含义提示的:

    GoFrame通用类型变量gvar与interface如何使用

    基本使用

    package mainimport (   "fmt"   "github.com/gogf/gf/container/gvar"   "github.com/gogf/gf/frame/g")func main() {   var v g.Var   v.Set("123")   fmt.Printf("v的类型:%T  值:%v \n", v, v) //v的类型:gvar.Var  值:{123 false}  其中false指的是并发安全开关为false   //设置并发安全开关为true   var vSafe = gvar.New("123", true)   fmt.Printf("vSafe的类型:%T  值:%v \n", vSafe, vSafe) //vSafe的类型:*gvar.Var  值:123   fmt.Println("获取gvar的值:", v.Val()) //123   //基本类型转换   fmt.Printf("v.Int()转换后的类型:%T  值:%v \n", v.Int(), v.Int())   fmt.Printf("v.Float64()转换后的类型:%T  值:%v \n", v.Float64(), v.Float64())   fmt.Printf("v.Uint()转换后的类型:%T  值:%v \n", v.Uint(), v.Uint())   //切片类型转换   fmt.Printf("v.Ints()转换后的类型:%T  值:%v \n", v.Ints(), v.Ints())   fmt.Printf("v.Strings()转换后的类型:%T  值:%v \n", v.Strings(), v.Strings())   fmt.Printf("v.Floats()转换后的类型:%T  值:%v \n", v.Floats(), v.Floats())}

    打印结果

    GoFrame通用类型变量gvar与interface如何使用

    序列化示例

    gvar 实现了标准库json的序列化和反序列化接口

    package mainimport (   "encoding/json"   "fmt"   "github.com/gogf/gf/frame/g")func main() {   type Person struct {      Name  *g.Var      Age   *g.Var      Hobby *g.Var   }   p := Person{      Name:  g.NewVar("王中阳"),      Age:   g.NewVar(12),      Hobby: g.NewVar(g.Slice{"吃饭", "睡觉", "打豆豆"}),   }   res, _ := json.Marshal(p)   fmt.Println("序列化结果:", string(res)) //序列化结果:{"Name":"王中阳","Age":12,"Hobby":["吃饭","睡觉","打豆豆"]}   //反序列化   data := []byte(`{"Name":"王中阳","Age":12,"Hobby":["吃饭","睡觉","打豆豆"]}`)   p1 := new(Person)   _ = json.Unmarshal(data, &p1)   fmt.Println("反序列化结果:", p1) //反序列化结果: &{王中阳 12 ["吃饭","睡觉","打豆豆"]}}

    打印结果

    GoFrame通用类型变量gvar与interface如何使用

    到此,相信大家对“GoFrame通用类型变量gvar与interface如何使用”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    GoFrame通用类型变量gvar与interface如何使用

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    GoFrame通用类型变量gvar与interface如何使用

    本篇内容主要讲解“GoFrame通用类型变量gvar与interface如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“GoFrame通用类型变量gvar与interface如何使用”吧!
    2023-07-02

    python变量数据类型和运算符如何使用

    本篇内容介绍了“python变量数据类型和运算符如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1 数据类型不同类型的变量可以进行的运
    2023-07-06

    PHP8如何使用Mixed Type来处理动态类型变量?

    PHP8如何使用Mixed Type来处理动态类型变量?概述:在过去的PHP版本中,变量的类型是相对灵活的,可以随意更改。这给开发者带来了灵活性,但也导致了类型安全的问题。PHP8引入了Mixed Type,提供了一种新的方式来处理动态类型
    2023-10-22

    PHP8如何使用Stringable Interface处理各种类型的字符串?

    PHP8如何使用Stringable Interface处理各种类型的字符串?PHP8引入了一个新的接口Stringable,该接口可以帮助开发者更方便地处理各种类型的字符串。在过去,我们通常使用is_string()函数来判断一个变量是否
    2023-10-22

    Go语言变量与常量如何声明与使用

    本文小编为大家详细介绍“Go语言变量与常量如何声明与使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Go语言变量与常量如何声明与使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。变量什么是变量?变量是一块可以
    2023-07-05

    如何在PHP8中使用Stringable Interface处理不同类型的字符串?

    如何在PHP8中使用Stringable Interface处理不同类型的字符串?在PHP中,字符串是最常用的数据类型之一。在PHP8版本中引入了Stringable接口,该接口定义了一个__toString()方法,使得任何实现了Stri
    2023-10-22

    Oracle变量如何与游标配合使用

    在Oracle数据库中,可以使用变量来存储数据,并将这些变量与游标配合使用来进行数据操作。以下是一个示例:DECLAREv_emp_id employees.employee_id%TYPE;v_emp_name employees.fi
    Oracle变量如何与游标配合使用
    2024-08-24

    如何在Oracle中创建用户自定义变量类型

    在Oracle数据库中,您可以使用对象关系型数据库(ORDBMS)功能创建用户自定义变量类型首先,确保您已经安装了Oracle数据库并具有适当的权限。打开SQL*Plus或其他支持的工具,连接到您的Oracle数据库实例。创建一个新的用户自
    如何在Oracle中创建用户自定义变量类型
    2024-08-27

    Java数据类型如何定义与使用

    这篇“Java数据类型如何定义与使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java数据类型如何定义与使用”文章吧。标
    2023-06-30

    PL/SQL中的变量如何声明与使用

    在PL/SQL中,变量可以通过DECLARE关键字进行声明,然后可以使用该变量存储数据,并在程序中进行操作。以下是一个简单示例:DECLARE-- 声明一个整型变量num INTEGER;BEGIN-- 给变量赋值num := 10;--
    PL/SQL中的变量如何声明与使用
    2024-05-07

    如何将泛型与自定义类型一起使用?

    php小编百草为您介绍如何将泛型与自定义类型一起使用。泛型是一种在编程中常用的技术,它可以使代码更加灵活和可复用。而自定义类型则是根据业务需求,开发者自己定义的数据类型。当我们需要在自定义类型中使用泛型时,可以通过泛型类或泛型接口来实现。通
    如何将泛型与自定义类型一起使用?
    2024-02-09

    如何利用Union Types在PHP8中更好地声明变量类型?

    如何利用Union Types在PHP8中更好地声明变量类型?简介:PHP是一种动态类型语言,变量的类型可以在运行时改变,这为开发者带来了很大的灵活性。然而,动态类型也给代码的可靠性带来了一定挑战,特别是在变量类型错误引发的Bug方面。为了
    2023-10-22

    如何使用PHP7的标量类型声明提高代码的可靠性?

    如何使用PHP7的标量类型声明提高代码的可靠性?随着PHP7的发布,引入了一项新特性——标量类型声明。这个特性可以让开发者在函数和方法的参数和返回值中,明确指定参数和返回值的数据类型。通过使用标量类型声明,可以在编写代码时增加可读性和可靠性
    2023-10-25

    如何使用 IN 运算符检查与我们当前使用的数据库不同的数据库中的 MySQL 表列表以及结果集中的表类型?

    可以使用 SHOW FULL TABLES 语句来完成。它的语法如下 -语法SHOW FULL TABLES IN db_name在这里,db_name 是我们想要查看表格列表的数据库的名称。示例我们当前正在使用名为‘query’的数据库,
    2023-10-22

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录