-
go test命令(Go语言测试指令)完全攻略
所属栏目:[语言] 日期:2023-07-05 热度:259
Go语言拥有一套单元测试和性能测试系统,仅需要添加很少的代码就可以快速测试一段需求代码。
go test 命令,会自动读取源码目录下面名为 *_test.go 的文件,生成并运行测试用的可执行文件。输出的信息类似下面所示[详细] -
go generate命令:在编译前自动生成某种类型代码
所属栏目:[语言] 日期:2023-07-05 热度:5804
go generate命令是在Go语言 1.4 版本里面新添加的一个命令,当运行该命令时,它将扫描与当前包相关的源代码文件,找出所有包含//go:generate的特殊注释,提取并执行该特殊注释后面的命令。
使用go generate命令时[详细] -
go get命令——一键完成代码、编译并安装
所属栏目:[语言] 日期:2023-07-05 热度:2799
go get 命令可以借助代码管理工具通过远程拉取或更新代码包及其依赖包,并自动完成编译和安装。整个过程就像安装一个 App 一样简单。
这个命令可以动态获取远程代码包,目前支持的有 BitBucket、GitHub、Google C[详细] -
go install命令——编辑并安装
所属栏目:[语言] 日期:2023-07-05 热度:6692
go install 命令的功能和前面一节《go build命令》中介绍的 go build 命令类似,附加参数绝大多数都可以与 go build 通用。go install 只是将编译的中间文件放在 GOPATH 的 pkg 目录下,以及固定地将编译结果放在 GO[详细]
-
go fmt命令——格式化代码文档
所属栏目:[语言] 日期:2023-07-05 热度:5879
对于一门编程语言来说,代码格式化是最容易引起争议的一个问题,不同的开发者可能会有不同的编码风格和习惯,但是如果所有开发者都能使用同一种格式来编写代码,那么开发者就可以将主要精力放在语言要解决的问题上,[详细]
-
go run指令——编译并运行
所属栏目:[语言] 日期:2023-07-05 热度:3781
Python 或者 Lua 语言可以在不输出二进制的情况下,将代码使用虚拟机直接执行。Go语言虽然不使用虚拟机,但可使用go run指令达到同样的效果。
go run命令会编译源码,并且直接执行源码的 main() 函数,不会在当前[详细] -
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 出现后迅速流行起来的一种概念,通过反射可以获取丰富的类型信息,并可以利用这些类型信息做非常灵活的工作。
大多数现代的高级语言都以各种形式支持反射功能,反射是把双刃剑,功能[详细]
