网站首页 > 文章中心 > 其它

go语言可以循环引入吗

作者:小编 更新时间:2023-10-23 11:03:21 浏览量:17人看过

Go语言和其他语言的不同之基本语法

Go语言作为出现比较晚的一门编程语言,在其原生支持高并发、云原生等领域的优秀表现,像目前比较流行的容器编排技术Kubernetes、容器技术Docker都是用Go语言写的,像Java等其他面向对象的语言,虽然也能做云原生相关的开发,但是支持的程度远没有Go语言高,凭借其语言特性和简单的编程方式,弥补了其他编程语言一定程度上的不足,一度成为一个热门的编程语言.

最近在学习Go语言,我之前使用过C#、Java等面向对象编程的语言,发现其中有很多的编程方式和其他语言有区别的地方,好记性不如烂笔头,最后提醒一下大家,和其他语言做个对比.这里只总结差异的地方,具体的语法不做详细的介绍.

种一棵树最好的时间是十年前,其次是现在.

go语言可以循环引入吗-图1

在不支持多重赋值的语言中,交换两个变量的值需要引入一个中间变量:

在使用其他语言时,有时候要获取一个值,却因为该函数返回多个值而不得不定义很多没有的变量,Go语言可以借助多重返回值和匿名变量来避免这种写法,使代码看起来更优雅.

若指向获得nickName,则函数调用可以这样写

这种写法可以让代码更清晰,从而大幅降低沟通的复杂度和维护的难度.

①.)基本常量

常量使用关键字const 定义,可以限定常量类型,但不是必须的,如果没有定义常量的类型,是无类型常量

Go语言预定义了这些常量 true、false和iota

go语言可以循环引入吗-图2

iota比较特殊,可以被任务是一个可被编译器修改的常量,在每个const关键字出现时被重置为0,然后在下一个const出现之前每出现一个iota,其所代表的数字会自动加1.

复数实际上是由两个实数(在计算机中使用浮点数表示)构成,一个表示实部(real)、一个表示虚部(imag).也就是数学上的那个复数

复数的表示

实部与虚部

对于一个复数z=complex(x,y),就可以通过Go语言内置函数real(z)获得该复数的实部,也就是x,通过imag(z)获得该复数的虚部,也就是y

数组切片(slice)弥补了数组的不足,其数据结构可以抽象为以下三个变量:

Go循环语句只支持for关键字,不支持while和do-while

go语言可以循环引入吗-图3

goto语句的语义非常简单,就是跳转到本函数内的某个标签

今天就介绍到这里,以后我会在总结Go语言在其他方面比如并发编程、面向对象、网络编程等方面的不同及使用方法.希望大家如果觉得本站发布的文章不错,请转发分享给您身边的朋友,您的支持是我们最大的动力.

Go语言"奇怪用法"有哪些

①.,go的变量声明顺序是:"先写变量名,再写类型名",此与C/C++的语法孰优孰劣,可见下文解释:

①.0,go语言只有一个循环结构——for循环.

①.1,go里的自增运算符只有——"后++"

Go语言在循环中panic后还能继续执行for循环?

如果用下面的方式,执行到第一个panic就会跳出for循环

只能输出第一个匹配项,然后退出for循环.

那么如何保证在for循环处理完panic不退出循环,直到打印完所有满足条件的数值?

golang的panic被恢复后,能继续执行比recover更早的defer,或者返回到recover函数的调用方,然后继续执行下去.

所以,我们可以把panic和recover放到单独的函数中,然后在for循环里调用这个函数,这个函数panic并恢复后,能返回到调用方for循环并继续循环下去.

执行结果是所有0到100的所有符合panic条件的都能正确处理,for循环没有异常退出:

golang的panic属于非常严重的错误,一旦panic没有recover的话,程序就退出了.一般避免主动panic,影响程序稳定性.

recover函数要放在defer里面,并且只能恢复同一个goroutine的并且是直接调用链函数发生的panic.recover不能恢复上一层函数的panic.

go语言循环队列的实现

队列的概念在 顺序队列 中,而使用循环队列的目的主要是规避假溢出造成的空间浪费,在使用循环队列处理假溢出时,主要有三种解决方案

本文提供后两种解决方案.

顺序队和循环队列是一种特殊的线性表,与顺序栈类似,都是使用一组地址连续的存储单元依次存放自队头到队尾的数据元素,同时附设队头(front)和队尾(rear)两个指针,但我们要明白一点,这个指针并不是指针变量,而是用来表示数组当中元素下标的位置.

本文使用切片来完成的循环队列,由于一开始使用三个参数的make关键字创建切片,在输出的结果中不包含nil值(看起来很舒服),而且在验证的过程中发现使用append()函数时切片内置的cap会发生变化,在消除了种种障碍后得到了一个四不像的循环队列,即设置的指针是顺序队列的指针,但实际上进行的操作是顺序队列的操作.最后是对make()函数和append()函数的一些使用体验和小结,队列的应用放在链队好了.

官方描述(片段)

即切片是一个抽象层,底层是对数组的引用.

当我们使用

构建出来的切片的每个位置的值都被赋为interface类型的初始值nil,但是nil值也是有大小的.

而使用

来进行初始化时,虽然生成的切片中不包含nil值,但是无法通过设置的指针变量来完成入队和出队的操作,只能使用append()函数来进行操作

在go语言中,切片是一片连续的内存空间加上长度与容量的标识,比数组更为常用.使用 append 关键字向切片中追加元素也是常见的切片操作

正是基于此,在使用go语言完成循环队列时,首先想到的就是使用make(type, len, cap)关键字方式完成切片初始化,然后使用append()函数来操作该切片,但这一方式出现了很多问题.在使用append()函数时,切片的cap可能会发生变化,用不好就会发生扩容或收缩.最终造成的结果是一个四不像的结果,入队和出队操作变得与指针变量无关,失去了作为循环队列的意义,用在顺序队列还算合适.

参考博客:

Go语言中的Nil

Golang之nil

Go 语言设计与实现

以上就是土嘎嘎小编为大家整理的go语言可以循环引入吗相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章