1. 首页
  2. 综合百科
  3. 静态语言包括哪些(分享静态代码分析工具)

静态语言包括哪些(分享静态代码分析工具)

简介:关于静态语言包括哪些(分享静态代码分析工具)的相关疑问,相信很多朋友对此并不是非常清楚,为了帮助大家了解相关知识要点,小编为大家整理出如下讲解内容,希望下面的内容对大家有帮助!
如果有更好的建议或者想看更多关于综合百科技术大全及相关资讯,可以多多关注茶馆百科网。

介绍了Go语言反射的意义和基本用法。

变量的内在机制

Go语言中的变量是3360,分为两部分。

类型信息:预定义的元信息。值信息:可以在程序运行过程中动态改变。

反射介绍

反射是指在程序运行时访问和修改程序本身的能力。程序编译时,变量被转换成内存地址,变量名不会被编译器写入可执行部分。运行程序时,程序无法获取自己的信息。

支持反射的语言可以集成变量的反射信息,如字段名、类型信息、结构信息等。在程序编译时转换成可执行文件,并为程序提供一个访问反射信息的接口,使其可以在程序运行时获取类型的反射信息,并具有修改它们的能力。

Go程序使用reflect包在运行时访问程序的反射信息。

在上一篇博客中,我们介绍了空接口。空接口可以存储任何类型的变量,那么我们怎么知道这个空接口存储的是什么数据呢?反射是在运行时动态获取变量的类型信息和值信息。

reflect包

在Go语言的反射机制中,任何接口值都由一个特定类型和一个特定类型的值组成(我们在上一篇关于接口的博客中介绍了相关概念)。在Go语言中,反射的相关函数由内置的reflect包提供,任何接口值都可以理解为由两部分组成:reflect。打字和反思。值,反射包提供了两个函数:反射。键入并反映。ValueOf获取任何对象的值和类型。

TypeOf

在Go语言中,类型对象(反射。Type)可以通过使用reflect函数获得任意值。TypeOf(),程序可以通过type对象访问任意值的类型信息。

type name和type kind

反射有两种类型:类型和种类。因为在Go语言中,我们可以使用type关键字构造很多自定义类型,Kind指的是底层类型,但是在反射中,当我们需要区分指针、结构等大型变种的类型时,我们会使用Kind。比如我们定义了两个指针类型和两个结构类型,通过反射来看它们的类型和种类。

在Go语言的反射中,数组、切片、Map、指针等变量都返回null。

反射包中定义的种类类型如下:

ValueOf

反思。ValueOf()返回反射的类型。Value,包含原始值的值信息。反思。值和原始值可以相互转换。

reflect提供的方法。值类型获取原始值如下:

通过反射获取值

通过反射设置变量的值

如果要通过反射修改函数中变量的值,需要注意函数参数传递的是值的副本,必须传递变量的地址才能修改变量的值。在反射中,专有的Elem()方法用于获取对应于指针的值。

isNil()和isValid()

isNil()

IsNil()报告V持有的值是否为零。V持有的值的分类必须是通道、函数、接口、映射、指针、切片中的一种;否则,IsNil函数将导致死机。

isValid()

IsValid()返回v是否包含一个值。如果V的值为零,它将返回false。这时V除IsValid、String、Kind之外的所有方法都会导致恐慌。

举个例子

IsNil()常用来判断指针是否为空;IsValid()通常用于确定返回值是否有效。

结构体反射

与结构体相关的方法

任何值通过reflect获得反射对象的信息后。TypeOf(),如果其类型为结构,则可以通过反射值对象(reflect)的NumField()和Field()方法获取结构成员的详细信息。类型)。

与在reflect中获取结构成员相关的方法。类型如下表所示。

StructField类型

StructField类型用于描述结构中字段的信息。

结构字段定义如下:

结构体反射示例

当我们通过反射得到一个结构数据时,可以通过索引依次得到它的字段信息,也可以通过字段名得到指定的字段信息。

接下来,编写一个函数printMethod(s接口{})来遍历printing S中包含的方法。

反射是把双刃剑

反射是一个强大的表达工具,它允许我们编写更灵活的代码。但是反思不应该被滥用,原因有以下三点。

基于反射的代码极其脆弱,反射中的类型错误只有在实际运行时才会引发恐慌,而这很可能是在代码写好很久之后。大量使用反射的代码通常难以理解。反射的性能较低,基于反射的代码通常比正常代码慢一两个数量级。

本文主要介绍了关于静态语言包括哪些(分享静态代码分析工具)的相关养殖或种植技术,综合百科栏目还介绍了该行业生产经营方式及经营管理,关注综合百科发展动向,注重系统性、科学性、实用性和先进性,内容全面新颖、重点突出、通俗易懂,全面给您讲解综合百科技术怎么管理的要点,是您综合百科致富的点金石。
以上文章来自互联网,不代表本人立场,如需删除,请注明该网址:http://seotea.com/article/729173.html