【转载】20.Golang之GMP模型

[TOC]前言Golang的一大特色就是Goroutine。Goroutine是Golang支持高并发的重要保障。Golang可以创建成千上万个Goroutine来处理任务,将这些Goroutine分配、负载、调度到处理器上采用的是G-M-P模型。一、什么是GoroutineGoroutine = Golang + Coroutine。Goroutine是golang实现的协程,是用户级线程...

GO 2022-07-12 PM 778次 0条

19.Golang静态类型与动态类型

[TOC]前言一、概述1.1 动态类型语言和静态类型语言动态类型语言动态类型语言的数据类型不是在编译阶段决定的,而是把类型绑定延后到了运行阶段,在运行期间才去做数据类型检查。主要语言:Python、Ruby、Erlang、JavaScript、swift、PHP、Perl。静态类型语言静态语言的数据类型是在编译期间(或运行之前)确定的,编写代码的时候要明确确定变量的数据类型。主要语言:C、C...

GO 2022-07-11 PM 1316次 0条

18.Golang之make和new区别

[TOC]前言作为go中的两个内置函数,主要用来创建和分配内存,创建内存时的规则如下:new只能用来分配内存;make只能用于slice、map以及channel等引用类型的初始化。一、引用类型和值类型在讲new和make的使用场景之前,先介绍一下golang中的值类型和引用类型。值类型:int、float、bool和string这些类型都属于值类型,使用这些类型的变量直接指向存在内存中的值...

GO 2022-07-07 PM 876次 0条

17.Golang接口介绍

[TOC]前言go语言并没有面向对象的相关概念,go语言提到的接口和java、c++等语言提到的接口不同,它不会显示的说明实现了接口,没有继承、子类、implements关键词。一、概述在 Go 语言中接口包含两种含义:它既是方法的集合, 同时还是一种类型。在Go 语言中是隐式实现的,意思就是对于一个具体的类型,不需要声明它实现了哪些接口,只需要提供接口所必需的方法。go语言通过隐性的方式实...

GO 2022-07-07 PM 747次 0条

16.Golang方法和函数区别

[TOC]前言在前面的章节中介绍过了Golang中的方法和函数,但是如果不进行比较,对于两者的认识还是很容易产生混淆。一、概述Go语言支持方法。Go方法与Go函数相似,但有一点不同,方法就是一个包含了接收者参数的函数。在接收者参数的帮助下,该方法可以访问接收者的属性。接收方可以是结构类型或非结构类型。在代码中创建方法时,接收者和接收者类型必须出现在同一个包中。而且不允许创建一个方法,其中的接...

GO 2022-07-06 AM 967次 0条

15.Golang流程控制

[TOC]前言一、概述流程控制是每种编程语言控制逻辑走向和执行次序的重要部分,流程控制可以说是一门语言的“经脉”。流程控制语句有三个作用:选择:根据条件跳转到不同的执行序列;循环:根据条件反复执行某个序列;跳转:据条件返回到某执行序列。流程控制语句类型Go语言支持如下的几种流程控制语句:条件语句:关键字为if、else和else if。选择语句:关键字为switch、case和select。...

GO 2022-07-05 PM 669次 0条

14.Go module介绍

[TOC]前言一、概述大多数语言都有“依赖”、“包”等概念,Go语言的依赖处理经历了几次变革。最早的时候,Go所依赖的所有的第三方库都放在GOPATH这个目录下面从v1.5开始引入vendor模式,如果项目目录下有vendor目录,那么go工具链会优先使用vendor内的包进行编译、测试等从v1.11开始,引入了Go Module 作为依赖解决方案,到v1.14宣布Go Module已经可以...

GO 2022-07-04 PM 1211次 0条

13.Golang包介绍

[TOC]前言Go语言是使用包来组织源代码的,包(package)是多个 Go 源码的集合,是一种高级的代码复用方案。Go语言中为我们提供了很多内置包,如 fmt、os、io 等。任何源代码文件必须属于某个包,同时源码文件的第一行有效代码必须是package pacakgeName 语句,通过该语句声明自己所在的包。一、概述Go语言的包借助了目录树的组织形式,一般包的名称就是其源文件所在目录...

GO 2022-07-04 PM 757次 0条

12.Golang函数

[TOC]前言一、概述函数 是基于功能或逻辑进行封装的可复用的代码结构。将一段功能复杂、很长的一段代码封装成多个代码片段(即函数),有助于提高代码可读性和可维护性。由于 Go 语言是编译型语言,所以函数编写的顺序是无关紧要的。特点无需声明原型支持不定变参支持多返回值支持命名返回参数支持匿名函数和闭包函数也是一种类型,一个函数可以赋值给变量不支持函数嵌套 (nested) ,但可以嵌套匿名函数...

GO 2022-07-03 PM 704次 0条

11.Golang结构体(二)

[TOC]前言一、方法和接收者1.1 格式定义Go语言中的方法(Method)是一种作用于特定类型变量的函数。这种特定类型变量叫做接收者(Receiver)。接收者的概念就类似于其他语言中的this或者 self。方法的定义格式如下:func (接收者变量 接收者类型) 方法名(参数列表) (返回参数) { 函数体 }说明接收者变量:接收者中的参数变量名在命名时,官方建议使用接收者类...

GO 2022-07-03 PM 695次 0条