-
Go语言包的基本定义
所属栏目:[语言] 日期:2023-06-29 热度:1298
Go语言是使用包来组织源代码的,包(package)是多个 Go 源码的集合,是一种高级的代码复用方案。Go语言中为我们提供了很多内置包,如 fmt、os、io 等。
任何源代码文件必须属于某个包,同时源码文件的第一行有效[详细] -
Go语言完成Web服务器
所属栏目:[语言] 日期:2023-06-29 热度:4806
Go语言里面提供了一个完善的 net/http 包,通过 net/http 包我们可以很方便的搭建一个可以运行的 Web 服务器。同时使用 net/http 包能很简单地对 Web 的路由,静态文件,模版,cookie 等数据进行设置和操作。
Web服[详细] -
Go语言error接口:返回错误数据
所属栏目:[语言] 日期:2023-06-29 热度:1687
错误处理在每个编程语言中都是一项重要内容,通常开发中遇到的分为异常与错误两种,Go语言中也不例外。本节我们主要来学习一下Go语言中的错误处理。
在C语言中通过返回 -1 或者 NULL 之类的信息来表示错误,但是对[详细] -
Go语言类型分支(switch判定空接口中变量的类型)
所属栏目:[语言] 日期:2023-06-29 热度:3504
type-switch 流程控制的语法或许是Go语言中最古怪的语法。 它可以被看作是类型断言的增强版。它和 switch-case 流程控制代码块有些相似。 一个 type-switch 流程控制代码块的语法如下所示:
switch t := areaIntf.([详细] -
Go语言空接口分类(interface{})
所属栏目:[语言] 日期:2023-06-29 热度:1527
空接口是接口类型的特殊形式,空接口没有任何方法,因此任何类型都无须实现空接口。从实现的角度看,任何值都满足这个接口的需求。因此空接口类型可以保存任何值,也可以从空接口中取出原值。
提示
空接口类型类似[详细] -
Go语言空接口类别(interface{})
所属栏目:[语言] 日期:2023-06-28 热度:5178
空接口是接口类型的特殊形式,空接口没有任何方法,因此任何类型都无须实现空接口。从实现的角度看,任何值都满足这个接口的需求。因此空接口类型可以保存任何值,也可以从空接口中取出原值。
提示
空接口类型类似[详细] -
跨语言接口与类型之间的转化
所属栏目:[语言] 日期:2023-06-28 热度:2521
Go语言中使用接口断言(type assertions)将接口转换成另外一个接口,也可以将接口转换为另外的类型。接口的转换在开发中非常常见,使用也非常频繁。
类型断言的格式
类型断言是一个使用在接口值上的操作。语法上它[详细] -
Go语言接口的嵌套结构设计
所属栏目:[语言] 日期:2023-06-28 热度:5092
在Go语言中,不仅结构体与结构体之间可以嵌套,接口与接口间也可以通过嵌套创造出新的接口。
一个接口可以包含一个或多个其他的接口,这相当于直接将这些内嵌接口的方法列举在外层接口中一样。只要接口的所有方法[详细] -
Go语言的排列(借助sort.Interface接口)
所属栏目:[语言] 日期:2023-06-28 热度:1508
排序操作和字符串格式化一样是很多程序经常使用的操作。尽管一个最短的快排程序只要 15 行就可以搞定,但是一个健壮的实现需要更多的代码,并且我们不希望每次我们需要的时候都重写或者拷贝这些代码。
幸运的是,[详细] -
Go语言类型断言概述
所属栏目:[语言] 日期:2023-06-28 热度:4380
类型断言(Type Assertion)是一个使用在接口值上的操作,用于检查接口类型变量所持有的值是否实现了期望的接口或者具体的类型。
在Go语言中类型断言的语法格式如下:
value, ok := x.(T)
其中,x 表示一个接[详细] -
Go语言类型和接口的关系
所属栏目:[语言] 日期:2023-06-28 热度:3108
在Go语言中类型和接口之间有一对多和多对一的关系,下面将列举出这些常见的概念,以方便读者理解接口与类型在复杂环境下的实现关系。
一个类型可以实现多个接口
一个类型可以同时实现多个接口,而接口间彼此独立,[详细] -
Go语言的接口要求
所属栏目:[语言] 日期:2023-06-28 热度:5756
如果一个任意类型 T 的方法集为一个接口类型的方法集的超集,则我们说类型 T 实现了此接口类型。T 可以是一个非接口类型,也可以是一个接口类型。
实现关系在Go语言中是隐式的。两个类型之间的实现关系不需要在代[详细] -
Go语言接口声明(概括)
所属栏目:[语言] 日期:2023-06-28 热度:2696
Go语言不是一种 “传统” 的面向对象编程语言:它里面没有类和继承的概念。
但是Go语言里有非常灵活的接口概念,通过它可以实现很多面向对象的特性。很多面向对象的语言都有相似的接口概念,但Go语言中[详细] -
Go语言链表控制
所属栏目:[语言] 日期:2023-06-28 热度:9896
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。
链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部[详细] -
Go语言垃圾回收与SetFinalizer
所属栏目:[语言] 日期:2023-06-28 热度:8877
Go语言自带垃圾回收机制(GC)。GC 通过独立的进程执行,它会搜索不再使用的变量,并将其释放。需要注意的是,GC 在运行时会占用机器资源。
GC 是自动进行的,如果要手动进行 GC,可以使用 runtime.GC() 函数,显[详细] -
Go语言嵌入式组织成员的名字冲突
所属栏目:[语言] 日期:2023-06-27 热度:625
嵌入结构体内部可能拥有相同的成员名,成员重名时会发生什么?下面通过例子来讲解。
package main
import (
"fmt"
)
type A struct {
a int
}
type B struct {
a int
}
type C struct {
[详细] -
Go语言初始化内嵌模型
所属栏目:[语言] 日期:2023-06-27 热度:7900
结构体内嵌初始化时,将结构体内嵌的类型作为字段名像普通结构体一样进行初始化,详细实现过程请参考下面的代码。
车辆结构的组装和初始化:
package main
import "fmt"
// 车轮
type Wheel struct {
Si[详细] -
Go语言类型内嵌与结构体内嵌
所属栏目:[语言] 日期:2023-06-27 热度:8299
结构体可以包含一个或多个匿名(或内嵌)字段,即这些字段没有显式的名字,只有字段的类型是必须的,此时类型也就是字段的名字。匿名字段本身可以是一个结构体类型,即结构体可以包含内嵌结构体。
可以粗略地将这[详细] -
Go语言组件函数
所属栏目:[语言] 日期:2023-06-27 热度:4773
Go语言的类型或结构体没有构造函数的功能,但是我们可以使用结构体初始化的过程来模拟实现构造函数。
其他编程语言构造函数的一些常见功能及特性如下:
每个类可以添加构造函数,多个构造函数使用函数重载实现。[详细] -
用 Go语言对结构体成员变量进行初始化
所属栏目:[语言] 日期:2023-06-27 热度:4613
结构体在实例化时可以直接对成员变量进行初始化,初始化有两种形式分别是以字段“键值对”形式和多个值的列表形式,键值对形式的初始化适合选择性填充字段较多的结构体,多个值的列表形式适合填充字段较少[详细]
-
Go语言实例化结构体——为结构体分配内存进行初始化
所属栏目:[语言] 日期:2023-06-27 热度:4690
结构体的定义只是一种内存布局的描述,只有当结构体实例化时,才会真正地分配内存,因此必须在定义结构体并实例化后才能使用结构体的字段。
实例化就是根据结构体定义的格式创建一份与格式一致的内存区域,结构体[详细] -
Go语言结构体的概念
所属栏目:[语言] 日期:2023-06-27 热度:5565
Go语言可以通过自定义的方式形成新的类型,结构体就是这些类型中的一种复合类型,结构体是由零个或多个任意类型的值聚合成的实体,每个值都可以称为结构体的成员。
结构体成员也可以称为“字段”,这些[详细] -
Go语言Test功能测试函数分析
所属栏目:[语言] 日期:2023-06-27 热度:8511
Go语言自带了 testing 测试包,可以进行自动化的单元测试,输出结果验证,并且可以测试性能。
为什么需要测试
完善的测试体系,能够提高开发的效率,当项目足够复杂的时候,想要保证尽可能的减少 bug,有两种有效的[详细] -
Go语言的计算函数运行时间
所属栏目:[语言] 日期:2023-06-27 热度:4664
函数的运行时间的长短是衡量这个函数性能的重要指标,特别是在对比和基准测试中,要得到函数的运行时间,最简单的办法就是在函数执行之前设置一个起始时间,并在函数运行结束时获取从起始时间到现在的时间间隔,这个[详细]
-
Go语言停机重启 — —防止程序崩溃
所属栏目:[语言] 日期:2023-06-27 热度:5696
Recover 是一个Go语言的内建函数,可以让进入宕机流程中的 goroutine 恢复过来,recover 仅在延迟函数 defer 中有效,在正常的执行过程中,调用 recover 会返回 nil 并且没有其他任何效果,如果当前的 goroutine 陷入[详细]
