互联网迅猛发展的数十年时间里,不断面领着各种新的场景与挑战,例如大数据、大规模集群计算、更复杂的网络环境、多核处理器引起对于高并发的需求,云计算,上千万行的服务器代码……那些成熟但上了年纪的语言没能为新的场景给出直接的解决方案。Go语言在这种时代背景下应运而生了。如今,Go语言就像冉冉升起的太阳耀眼夺目,又如万马奔腾,势不可挡。一门有潜力的语言需要具备诸多要素,Go语言显然都具备了。其语言的设计者
文章目录数组与切片切片扩容函数传参MapMap底层数据结构key的访问map的遍历遍历的随机性遍历当中发生的扩容扩容扩容触发条件条件1-扩充条件2-压实接口底层结构ifaceeface接口类型是不是nil方法接收者Channel底层结构channel的发送策略channel的接收策略channel的关闭happend-before标准库ContextContext取消timerCtxreflec
底层编程Go语言的设计包含了诸多安全策略,限制了可能导致程序运行出错的用法。编译时类型检查可以发现大多数类型不匹配的操作,例如两个字符串做减法的错误。字符串、map、slice和chan等所有的内置类型,都有严格的类型转换规则。对于无法静态检测到的错误,例如数组访问越界或使用空指针,运行时动态检测可以保证程序在遇到问题的时候立即终止并打印相关的错误信息。自动内存管理(垃圾内存自动回收)可以消除大部
转载 2023-09-29 19:48:02
340阅读
文章目录GoLang之深入解析Go中Slice底层实现1.前言2.证明slice指向数组3.证明数组是值类型4.slice由来5.slice数据结构6.slice中获取一块内存地址7.从go的内存地址中构造一个slice7.1方法一7.2方法二8.make创建slice9.字面量创建slice10.nil切片11.空切片11.切片扩容12.扩容策略13.扩容后新数组or老数组?13.1老数组情况
文章目录Go语言简介Go 是编译型语言Go的特点语法简单并发模型内存分配垃圾回收静态链接标准库工具链为并发而生的Go语言 Go语言简介Go语言不但能让你访问底层操作系统,还提供了强大的网络编程和并发编程支持。可以进行网络编程、系统编程、并发编程、分布式编程。具有“部署简单、并发性好、语言设计良好、执行性能好”等优势。Go 从C语言继承了相似的表达式语法、控制流结构、基础数据类型、调用参数传值、指
Go语言的前世今生一、 为什么需要一个新的语言最近十年来,C/C++在计算领域没有很好得到发展,并没有新的系统编程语言出现。对开发程度和系统效率在很多情况下不能兼得。要么执行效率高,但低效的开发和编译,如C++;要么执行低效,但拥有有效的编译,如.NET、Java;所以需要一种拥有较高效的执行速度、编译速度和开发速度的编程语言Go就横空出世了。传统的语言比如c++,大家花费太多时间来学习如何使用
函数声明函数自变量为同类型可以合并类型只有输出没有输入的函数声明函数变量的使用总结 Go语言函数支持的特性包括:◇ 参数数量不固定(可变参数)。 ◇ 匿名函数及其闭。 ◇ 函数本身作为值传递。 ◇ 函数的延迟执行。 ◇ 把函数作为接口调用声明函数声明的格式:func 函数名(参数列表) (返回参数列表){ 函数体 } 可读形式 : func 函数名(参数1 类型1, 参数2 类型2, 参
转载 2023-09-01 08:53:09
112阅读
Go语言的 os 中提供了操作系统函数的接口,是一个比较重要的。顾名思义,os 的作用主要是在服务器上进行系统的基本操作,如文件操作、目录操作、执行命令、信号与中断、进程、系统状态等等。os 中的常用函数1) Hostname 函数定义: func Hostname() (name string, err error)Hostname 函数会返回内核提供的主机名。2) Environ 函数
在工程化的Go语言开发项目中,Go语言的源码复用是建立在(package)基础之上的。本文介绍了Go语言中如何定义、如何导出包的内容及如何导入其他Go语言(package)介绍(package)是多个Go源码的集合,是一种高级的代码复用方案,Go语言为我们提供了很多内置,如fmt、os、io等。定义我们还可以根据自己的需要创建自己的。一个可以简单理解为一个存放.go文件的文
转载 2023-07-26 16:21:22
79阅读
目录1、介绍2、标准库3、程序执行顺序1、介绍是结构化代码的一种方式:每个程序都由(通常简称为 pkg)的概念组成,可以使用自身的或者从其他中导入内容。如同其他一些编程语言中的类库或命名空间的概念,每个 go 文件都属于且仅属于一个。一个可以有许多以 .go 为扩展名的源文件组成,因此文件名和名一般来说都是不相同的。必须在源文件中非注释的第一行指明这个文件属于哪个,如:pack
转载 2024-01-12 11:07:17
65阅读
介绍(package)是多个Go源码的集合,是一种高级的代码复用方案,Go语言为我们提供了很多内置,如fmt、os、io等。定义我们还可以根据自己的需要创建自己的。一个可以简单理解为一个存放.go文件的文件夹。 该文件夹下面的所有go文件都要在代码的第一行添加如下代码,声明该文件归属的。package 名注意事项:一个文件夹下面只能有一个,同样一个的文件不能在多个文件夹下。
转载 2023-07-18 12:24:44
87阅读
标准的Go语言代码库中包含了大量的,并且在安装 Go 的时候多数会自动安装到系统中。我们可以在 $GOROOT/src/pkg 目录中查看这些。下面简单介绍一些我们开发中常用的。1) fmt fmt 实现了格式化的标准输入输出,这与C语言中的 printf 和 scanf 类似。其中的 fmt.Printf() 和 fmt.Println() 是开发者使用最为频繁的函数。格式化短语派生于C
转载 2023-12-24 08:37:55
73阅读
本文目录Map实现原理1、概述2、哈希碰撞2.1、拉链法2.2、开放地址法3、常用操作3.1、声明与创建3.2、获取值3.3、赋值操作3.4、key的比较性3.5、并发问题4、底层结构4.1、哈希表结构体4.2、溢出桶4.3、map重建4.4、删除原理 Map实现原理1、概述Map这一数据结构在很多语言中都存在,其查询的效率非常高,时间复杂度在O(1)的级别,其底层原理使用的是哈希表,通过计算k
文章目录并发编程1.概述1.1 并行和并发1.2 Go语言并发优势2. goroutine2.1 goroutine的定义2.2 goroutine的创建和运行2.2.1 mian goroutine2.2.2 其他goroutine2.3 runtime2.3.1 Gosched3.2.3 Goexit2.3.3 GOMAXPROCS3 channel3.1 概述3.2 channel的创建
转载 2023-08-18 18:49:53
88阅读
函数是组织好的、可重复使用的、用于执行指定任务的代码块。本文介绍了Go语言中函数的相关内容。函数Go语言中支持函数、匿名函数和闭,并且函数在Go语言中属于“一等公民”。函数定义Go语言中定义函数使用func关键字,具体格式如下:func 函数名(参数)(返回值){ 函数体 }其中:函数名:由字母、数字、下划线组成。但函数名的第一个字母不能是数字。在同一个内,函数名也称不能重名(的概念
一、数组1.1 数组赋值给数组Go数组是值类型,因此赋值操作和函数传参数会复制整个数组的数据,例:func main() { a := [3]int{1, 2, 3} b := a fmt.Printf("a addr: %p, a[0] addr: %p\n", &a, &(a[0])) fmt.Printf("b addr: %p, b[0] addr: %p\n",
转载 2024-09-02 12:06:38
24阅读
## 实现go语言setmaxprocs底层源码的步骤 为了实现go语言的setmaxprocs底层源码,首先需要了解setmaxprocs的作用和原理,然后按照以下步骤进行操作: 1. **Step 1: 了解setmaxprocs的作用和原理** 在开始之前,我们需要了解setmaxprocs的作用。setmaxprocs函数用于设置Go程序可同时执行的最大CPU核心数。默认情况下
原创 2024-01-30 06:38:11
72阅读
os标准,是一个比较重要的,顾名思义,主要是在服务器上进行系统的基本操作,如文件操作,目录操作,执行命令,信号与中断,进程,系统状态等等。在os包下,有exec,signal,user三个子。启动外部命令和程序在os中,有很多有趣的功能,比如可以通过变量Args来获取命令参数,os.Args返回一个字符串数组。fmt.Println(os.Args)在os中,相关函数名字和作用有较重的U
转载 2023-08-24 20:17:06
61阅读
通过前面几节的学习,相信大家已经对Go语言有了一定的了解,接下来将为大家介绍如何在我们的电脑上安装Go语言开发包,首先从 Windows 系统开始。下载Go语言开发包大家可以在Go语言官网(https://golang.google.cn/dl/)下载 Windows 系统下的Go语言开发包,如下图所示。这里我们下载的是 64 位的开发包,如果读者的电脑是 32 位系统的话,则需要下载 32 位的
前言本篇博客不会贴出go的源码,只会告诉你slice用法,因为我们学习一项技术主要学的是编程的思想,眼花缭乱的源码千篇一律,深入人心的思想万里挑一,博客种通过图文的方式介绍底层机制,为的是能让开发人员写出属于自己的技术,而不是生搬硬套去复制别人的代码,相信等你理解了底层原理之后,你完全可以自己写一个动态数组出来,这就是我写博客的初心!slice是什么在go语言中,如果想要使用一个连续的内存空间,你
  • 1
  • 2
  • 3
  • 4
  • 5