-
go clean命令——删除编译文件
所属栏目:[语言] 日期:2023-07-05 热度:858
Go语言中go clean命令可以移除当前源码包和关联源码包里面编译生成的文件,这些文件包括以下几种:
执行go build命令时在当前目录下生成的与包名或者 Go 源码文件同名的可执行文件。在 Windows 下,则是与包名或者 [详细] -
go build命令(go语言编译命令)全部攻略
所属栏目:[语言] 日期:2023-07-05 热度:719
Go语言的编译速度非常快。Go 1.9 版本后默认利用Go语言的并发特性进行函数粒度的并发编译。
Go语言的程序编写基本以源码方式,无论是自己的代码还是第三方代码,并且以 GOPATH 作为工作目录和一套完整的工程目录规[详细] -
文件锁操作的 Go语言
所属栏目:[语言] 日期:2023-07-05 热度:4230
我们使用Go语言开发一些程序的时候,往往出现多个进程同时操作同一份文件的情况,这很容易导致文件中的数据混乱。这时我们就需要采用一些手段来平衡这些冲突,文件锁(flock)应运而生,下面我们就来介绍一下。
对[详细] -
Go语言文件的输入、追加、读取、复制操作
所属栏目:[语言] 日期:2023-07-05 热度:2707
Go语言的 os 包下有一个 OpenFile 函数,其原型如下所示:
func OpenFile(name string, flag int, perm FileMode) (file *File, err error)
其中 name 是文件的文件名,如果不是在当前路径下运行需要加上具体路径[详细] -
Go语言的JSON数据包的读写方法
所属栏目:[语言] 日期:2023-07-04 热度:6626
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成。它基于 JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999 的一个子集[详细]
-
基于 Go语言的 JSON文件的读取和输出
所属栏目:[语言] 日期:2023-07-04 热度:2674
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成。它基于 JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999 的一个子集[详细]
-
Go语言自定义数据文档
所属栏目:[语言] 日期:2023-07-04 热度:1593
对一个程序非常普遍的需求包括维护内部数据结构,为数据交换提供导入导出功能,也支持使用外部工具来处理数据。
由于我们这里的关注重点是文件处理,因此我们纯粹只关心如何从程序内部数据结构中读取数据并将其写[详细] -
Go语言插件库:依赖插入
所属栏目:[语言] 日期:2023-07-04 热度:4803
在介绍 inject 之前我们先来简单介绍一下“依赖注入”和“控制反转”这两个概念。
正常情况下,对函数或方法的调用是我们的主动直接行为,在调用某个函数之前我们需要清楚地知道被调函数的名[详细] -
Go语言会以反射方式调用函数
所属栏目:[语言] 日期:2023-07-04 热度:1320
如果反射值对象(reflect.Value)中值的类型为函数时,可以通过 reflect.Value 调用该函数。使用反射调用函数时,需要将参数使用反射值对象的切片 []reflect.Value 构造后传入 Call() 方法中,调用完成时,函数的返回[详细]
-
Go语言通过类型信息打造实例
所属栏目:[语言] 日期:2023-07-04 热度:9980
当已知 reflect.Type 时,可以动态地创建这个类型的实例,实例的类型为指针。例如 reflect.Type 的类型为 int 时,创建 int 的指针,即*int,代码如下:
package main
import (
"fmt"
"reflect"
)
fun[详细] -
Go语言通过反射修正获得多态值
所属栏目:[语言] 日期:2023-07-04 热度:8218
Go语言中类似 x、x.f[1] 和 *p 形式的表达式都可以表示变量,但是其它如 x + 1 和 f(2) 则不是变量。一个变量就是一个可寻址的内存空间,里面存储了一个值,并且存储的值可以通过内存地址来更新。
对于 reflect.V[详细] -
Go语言IsNil()和IsValid()——判定反射值的空和有效性
所属栏目:[语言] 日期:2023-07-04 热度:3045
反射值对象(reflect.Value)提供一系列方法进行零值和空判定,如下表所示。
反射值对象的零值和有效性判断方法
方 法 说 明
IsNil() bool 返回值是否为 nil。如果值类型不是通道(channel)、函数、接口[详细] -
Go语言利用反射来获取构造体成员的值
所属栏目:[语言] 日期:2023-07-04 热度:3357
反射值对象(reflect.Value)提供对结构体访问的方法,通过这些方法可以完成对结构体任意值的访问,如下表所示。
反射值对象的成员访问方法
方 法 备 注
Field(i int) Value 根据索引,返回索引对应的结[详细] -
Go语言reflect.ValueOf()和reflect.Value(通过反射获取值资讯)
所属栏目:[语言] 日期:2023-07-04 热度:9730
当我们将一个接口值传递给一个 reflect.ValueOf 函数调用时,此调用返回的是代表着此接口值的动态值的一个 reflect.Value 值。我们必须通过间接的途径获得一个代表一个接口值的 reflect.Value 值。
reflect.Value[详细] -
Go语言结构体标记(Struct Tag)
所属栏目:[语言] 日期:2023-07-04 热度:1187
通过 reflect.Type 获取结构体成员信息 reflect.StructField 结构中的 Tag 被称为结构体标签(Struct Tag)。结构体标签是对结构体字段的额外信息标签。
JSON、BSON 等格式进行序列化及对象关系映射(Object Rela[详细] -
Go语言反射.Elem():用反射获得 String的指向
所属栏目:[语言] 日期:2023-07-03 热度:1608
Go语言程序中对指针获取反射对象时,可以通过 reflect.Elem() 方法获取这个指针指向的元素类型。这个获取过程被称为取元素,等效于对指针类型变量做了一个*操作,代码如下:
package main
import (
"fmt"
[详细] -
Go语言reflect.TypeOf()和reflect.Type(通过反射获得类型信息)
所属栏目:[语言] 日期:2023-07-03 热度:296
在 Go语言中通过调用 reflect.TypeOf 函数,我们可以从一个任何非接口类型的值创建一个 reflect.Type 值。reflect.Type 值表示着此非接口值的类型。通过此值,我们可以得到很多此非接口类型的信息。当然,我们也可以[详细]
-
Go语言反射规则分析
所属栏目:[语言] 日期:2023-07-03 热度:1485
反射是众多编程语言中的一个非常实用的功能,它是一种能够自描述、自控制的应用,Go语言也对反射提供了友好的支持。
Go语言中使用反射可以在编译时不知道类型的情况下更新变量,在运行时查看值、调用方法以及直接[详细] -
Go语言反射(reflection)概要
所属栏目:[语言] 日期:2023-07-03 热度:602
反射(reflection)是在 Java 出现后迅速流行起来的一种概念,通过反射可以获取丰富的类型信息,并可以利用这些类型信息做非常灵活的工作。
大多数现代的高级语言都以各种形式支持反射功能,反射是把双刃剑,功能[详细] -
Go语音聊天服务器
所属栏目:[语言] 日期:2023-07-03 热度:3891
服务端程序中包含 4 个 goroutine,分别是一个主 goroutine 和广播(broadcaster)goroutine,每一个连接里面又包含一个连接处理(handleConn)goroutine 和一个客户写入(clientwriter)goroutine。
广播器(bro[详细] -
Go语言CSP:通信顺序进程概述
所属栏目:[语言] 日期:2023-07-03 热度:8823
Go实现了两种并发形式,第一种是大家普遍认知的多线程共享内存,其实就是 Java 或 C++ 等语言中的多线程开发;另外一种是Go语言特有的,也是Go语言推荐的 CSP(communicating sequential processes)并发模型。
C[详细] -
Go语言死锁、活锁和饥饿简述
所属栏目:[语言] 日期:2023-07-03 热度:6162
死锁是指两个或两个以上的进程(或线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进[详细]
-
Go语言等待组 (同步.等待组)
所属栏目:[语言] 日期:2023-07-03 热度:3644
Go语言中除了可以使用通道(channel)和互斥锁进行两个并发程序间的同步外,还可以使用等待组进行多个任务的同步,等待组可以保证在并发环境中完成指定数量的任务
在 sync.WaitGroup(等待组)类型中,每个 sync.[详细] -
Go语言互斥锁(sync.Mutex)与读写互斥锁(sync.RWMutex)
所属栏目:[语言] 日期:2023-07-03 热度:234
Go语言包中的 sync 包提供了两种锁类型:sync.Mutex 和 sync.RWMutex。
Mutex 是最简单的一种锁类型,同时也比较暴力,当一个 goroutine 获得了 Mutex 后,其他 goroutine 就只能乖乖等到这个 goroutine 释放该 M[详细] -
Go语言的多核并行性研究
所属栏目:[语言] 日期:2023-07-03 热度:3016
Go语言具有支持高并发的特性,可以很方便地实现多线程运算,充分利用多核心 cpu 的性能。
众所周知服务器的处理器大都是单核频率较低而核心数较多,对于支持高并发的程序语言,可以充分利用服务器的多核优势,从而[详细]
