-
Go语言reflect.ValueOf()和reflect.Value 经过反射获取值信息
所属栏目:[语言] 日期:2023-06-01 热度:4858
当我们将一个接口值传递给一个 reflect.ValueOf 函数调用时,此调用返回的是代表着此接口值的动态值的一个 reflect.Value 值。我们必须通过间接的途径获得一个代表一个接口值的 reflect.Value 值。reflect.Value 类型[详细]
-
Go语言结构体标志 Struct Tag
所属栏目:[语言] 日期:2023-06-01 热度:7770
通过 reflect.Type 获取结构体成员信息 reflect.StructField 结构中的 Tag 被称为结构体标签(Struct Tag)。结构体标签是对结构体字段的额外信息标签。JSON、BSON 等格式进行序列化及对象关系映射(Object Relation[详细]
-
Go语言通过反射获取结构体的成员类别
所属栏目:[语言] 日期:2023-06-01 热度:6723
任意值通过 reflect.TypeOf() 获得反射对象信息后,如果它的类型是结构体,可以通过反射值对象(reflect.Type)的 NumField() 和 Field() 方法获得结构体成员的详细信息。reflect.Type 的 Field() 方法返回 StructFi[详细]
-
Go语言reflect.Elem()——通过反射获取指针指向的元素类别
所属栏目:[语言] 日期:2023-05-31 热度:6040
Go语言程序中对指针获取反射对象时,可以通过 reflect.Elem() 方法获取这个指针指向的元素类型。这个获取过程被称为取元素,等效于对指针类型变量做了一个*操作,代码如下:package mainimport ("fmt""reflect")func[详细]
-
Go语言reflect.TypeOf()和reflect.Type 经过反射获取类型信息
所属栏目:[语言] 日期:2023-05-31 热度:1454
在 Go语言中通过调用 reflect.TypeOf 函数,我们可以从一个任何非接口类型的值创建一个 reflect.Type 值。reflect.Type 值表示着此非接口值的类型。通过此值,我们可以得到很多此非接口类型的信息。当然,我们也可以[详细]
-
Go语言反射规则分析
所属栏目:[语言] 日期:2023-05-31 热度:2553
反射是众多编程语言中的一个非常实用的功能,它是一种能够自描述、自控制的应用,Go语言也对反射提供了友好的支持。Go语言中使用反射可以在编译时不知道类型的情况下更新变量,在运行时查看值、调用方法以及直接对他[详细]
-
Go语言CSP 通信顺序进展简述
所属栏目:[语言] 日期:2023-05-31 热度:6932
Go实现了两种并发形式,第一种是大家普遍认知的多线程共享内存,其实就是 Java 或 C++ 等语言中的多线程开发;另外一种是Go语言特有的,也是Go语言推荐的 CSP(communicating sequential processes)并发模型。CSP 并[详细]
-
Go语言死锁 活锁和饥饿解说
所属栏目:[语言] 日期:2023-05-31 热度:2828
死锁是指两个或两个以上的进程(或线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进[详细]
-
goroutine和coroutine的差异
所属栏目:[语言] 日期:2023-05-31 热度:8021
C#、Lua、Python 语言都支持 coroutine 特性。coroutine 与 goroutine 在名字上类似,都可以将函数或者语句在独立的环境中运行,但是它们之间有两点不同:goroutine 可能发生并行执行;但 coroutine 始终顺序执行。g[详细]
-
并发和并行的差异
所属栏目:[语言] 日期:2023-05-31 热度:2983
在讲解并发概念时,总会涉及另外一个概念并行。下面让我们来了解并发和并行之间的区别。并发(concurrency):把任务在不同的时间点交给处理器进行处理。在同一时间点,任务并不会同时运行。并行(parallelism):把[详细]
-
Go语言GOMAXPROCS 调整并发的运作性能
所属栏目:[语言] 日期:2023-05-31 热度:5087
在 Go语言程序运行时(runtime)实现了一个小型的任务调度器。这套调度器的工作原理类似于操作系统调度线程,Go 程序调度器可以高效地将 CPU 资源分配给每一个任务。传统逻辑中,开发者需要维护线程池中线程与 CPU 核[详细]
-
Go语言竞争状态阐述
所属栏目:[语言] 日期:2023-05-31 热度:4246
有并发,就有资源竞争,如果两个或者多个 goroutine 在没有相互同步的情况下,访问某个共享的资源,比如同时对该资源进行读写时,就会处于相互竞争的状态,这就是并发中的资源竞争。并发本身并不复杂,但是因为有了资[详细]
-
Go语言并发简述 并发的优点
所属栏目:[语言] 日期:2023-05-31 热度:1437
有人把Go语言比作 21 世纪的C语言,第一是因为Go语言设计简单,第二则是因为 21 世纪最重要的就是并发程序设计,而 Go 从语言层面就支持并发。同时实现了自动垃圾回收机制。Go语言的并发机制运用起来非常简便,在启动[详细]
-
Go语言go mod包依赖管理工具运用详解
所属栏目:[语言] 日期:2023-05-30 热度:5187
最早的时候,Go语言所依赖的所有的第三方库都放在 GOPATH 这个目录下面,这就导致了同一个库只能保存一个版本的代码。如果不同的项目依赖同一个第三方的库的不同版本,应该怎么解决?go module 是Go语言从 1.11 版本[详细]
-
Go语言flag包 命令行参数剖析
所属栏目:[语言] 日期:2023-05-30 热度:5916
在编写命令行程序(工具、server)时,我们有时需要对命令参数进行解析,各种编程语言一般都会提供解析命令行参数的方法或库,以方便程序员使用。在Go语言中的 flag 包中,提供了命令行参数解析的功能。下面我们就来[详细]
-
Go语言os包用法阐述
所属栏目:[语言] 日期:2023-05-30 热度:5927
Go语言的 os 包中提供了操作系统函数的接口,是一个比较重要的包。顾名思义,os 包的作用主要是在服务器上进行系统的基本操作,如文件操作、目录操作、执行命令、信号与中断、进程、系统状态等等。os 包中的常用函数[详细]
-
Go语言time包 时间与日期
所属栏目:[语言] 日期:2023-05-30 热度:91
时间和日期是我们开发中经常会用到的,Go语言中的 time 包提供了时间显示和测量等所用的函数,本节我们就来介绍一下 time 包的基本用法。时间一般包含时间值和时区,可以从Go语言中 time 包的源码中看出:type Time [详细]
-
Go语言导出包中的标识符 使外部访问包的类型和值
所属栏目:[语言] 日期:2023-05-30 热度:2447
在 Go语言中,如果想在一个包里引用另外一个包里的标识符(如类型、变量、常量等)时,必须首先将被引用的标识符导出,将要导出的标识符的首字母大写就可以让引用者可以访问这些标识符了。导出包内标识符下面代码中包[详细]
-
Go语言常用内置包说明
所属栏目:[语言] 日期:2023-05-30 热度:5312
标准的Go语言代码库中包含了大量的包,并且在安装 Go 的时候多数会自动安装到系统中。我们可以在 $GOROOT/src/pkg 目录中查看这些包。下面简单介绍一些我们开发中常用的包。1) fmtfmt 包实现了格式化的标准输入输出,[详细]
-
Go语言封装简介及实现节点
所属栏目:[语言] 日期:2023-05-30 热度:2924
在Go语言中封装就是把抽象出来的字段和对字段的操作封装在一起,数据被保护在内部,程序的其它包只能通过被授权的方法,才能对字段进行操作。封装的好处:隐藏实现细节;可以对数据进行验证,保证数据安全合理。如何[详细]
-
Go语言包的基础概念
所属栏目:[语言] 日期:2023-05-30 热度:3683
Go语言是使用包来组织源代码的,包(package)是多个 Go 源码的集合,是一种高级的代码复用方案。Go语言中为我们提供了很多内置包,如 fmt、os、io 等。任何源代码文件必须属于某个包,同时源码文件的第一行有效代码[详细]
-
Go语言达成Web服务器
所属栏目:[语言] 日期:2023-05-30 热度:713
Go语言里面提供了一个完善的 net/http 包,通过 net/http 包我们可以很方便的搭建一个可以运行的 Web 服务器。同时使用 net/http 包能很简单地对 Web 的路由,静态文件,模版,cookie 等数据进行设置和操作。我们平时[详细]
-
Go语言空接口类别(interface{})
所属栏目:[语言] 日期:2023-05-30 热度:452
空接口是接口类型的特殊形式,空接口没有任何方法,因此任何类型都无须实现空接口。从实现的角度看,任何值都满足这个接口的需求。因此空接口类型可以保存任何值,也可以从空接口中取出原值。空接口类型类似于 C# 或[详细]
-
Go语言接口和类型之间的变换
所属栏目:[语言] 日期:2023-05-29 热度:4342
Go语言中使用接口断言(type assertions)将接口转换成另外一个接口,也可以将接口转换为另外的类型。接口的转换在开发中非常常见,使用也非常频繁。类型断言的格式类型断言是一个使用在接口值上的操作。语法上它看起[详细]
-
Go语言类型与接口的联系
所属栏目:[语言] 日期:2023-05-29 热度:3459
在Go语言中类型和接口之间有一对多和多对一的关系,下面将列举出这些常见的概念,以方便读者理解接口与类型在复杂环境下的实现关系。一个类型可以同时实现多个接口,而接口间彼此独立,不知道对方的实现。网络上的两[详细]