-
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语言中类型和接口之间有一对多和多对一的关系,下面将列举出这些常见的概念,以方便读者理解接口与类型在复杂环境下的实现关系。一个类型可以同时实现多个接口,而接口间彼此独立,不知道对方的实现。网络上的两[详细]
-
Go语言达成接口的条件
所属栏目:[语言] 日期:2023-05-29 热度:8654
如果一个任意类型 T 的方法集为一个接口类型的方法集的超集,则我们说类型 T 实现了此接口类型。T 可以是一个非接口类型,也可以是一个接口类型。实现关系在Go语言中是隐式的。两个类型之间的实现关系不需要在代码中[详细]
-
Go语言数据I/O对象及运行
所属栏目:[语言] 日期:2023-05-29 热度:941
在Go语言中,几乎所有的数据结构都围绕接口展开,接口是Go语言中所有数据结构的核心。在实际开发过程中,无论是实现 web 应用程序,还是控制台输入输出,又或者是网络操作,都不可避免的会遇到 I/O 操作。Go语言标准[详细]
-
Go语言类别内嵌和结构体内嵌
所属栏目:[语言] 日期:2023-05-29 热度:7025
结构体可以包含一个或多个匿名(或内嵌)字段,即这些字段没有显式的名字,只有字段的类型是必须的,此时类型也就是字段的名字。匿名字段本身可以是一个结构体类型,即结构体可以包含内嵌结构体。可以粗略地将这个和[详细]
-
Go语言结构体概念
所属栏目:[语言] 日期:2023-05-29 热度:3792
Go语言可以通过自定义的方式形成新的类型,结构体就是这些类型中的一种复合类型,结构体是由零个或多个任意类型的值聚合成的实体,每个值都可以称为结构体的成员。结构体成员也可以称为“字段”,这些字段[详细]
-
Go语言Test功能测试函数解说
所属栏目:[语言] 日期:2023-05-29 热度:6905
Go语言自带了 testing 测试包,可以进行自动化的单元测试,输出结果验证,并且可以测试性能。为什么需要测试完善的测试体系,能够提高开发的效率,当项目足够复杂的时候,想要保证尽可能的减少 bug,有两种有效的方式[详细]
