欢迎来到 Golang 新手教程 专栏!🚀
这个系列专为 Go 语言初学者准备,内容涵盖了从环境搭建到并发编程的核心知识。我会用最通俗易懂的语言,配合大量代码示例,带你一步步掌握 Go 语言。
欢迎来到 Golang 新手教程 专栏!🚀
这个系列专为 Go 语言初学者准备,内容涵盖了从环境搭建到并发编程的核心知识。我会用最通俗易懂的语言,配合大量代码示例,带你一步步掌握 Go 语言。
goroutine执行顺序 上一篇说到,goroutine是程序执行过程中的一个独立的单元,当程序中只有一个goroutine时,程序逻辑按照代码的顺序来执行,但是当程序中同时运行多个goroutine时, 逻辑的执行顺序是不确定的,比如下面的例子: func main() { for i := 0; i < 10; i++ { go display(i) } time.Sleep(time.Second) } func display(n int) { fmt.Printf("Number %d First\n", n) fmt.Printf("Number %d Second\n", n) } /*output: Number 9 First Number 6 First Number 5 First Number 5 Second Number 4 First Number 4 Second Number 0 First Number 0 Second Number 9 Second Number 8 First Number 8 Second Number 6 Second Number 3 First Number 3 Second Number 7 First Number 7 Second Number 2 First Number 2 Second Number 1 First Number 1 Second */ 上面的代码中,我们开启了10个goroutine,但是实际运行结果则是不同的goroutine穿插执行。如果这些goroutine之间没有关联,那么穿插执行并不会导致什么问题,但是如果它们之间有关联,比如需要访问同一块内存, 则程序的执行结果可能会依赖各个goroutine的执行顺序,这种情况称之为竞态。 ...
goroutine goroutine是Golang实现并发的一种手段,在一个Golang程序中,每一个goroutine相当于一个独立的执行单元,这类似于线程,但是并不是线程,而是Golang在语言层面上对线程的一种抽象。 Golang程序执行的时候默认会创建一个goroutine,可以叫他main goroutine。其他的goroutine需要我们通过go func()的形式创建。 这有点类似于一个工厂,工厂里面至少要有一个人员吧,我们称之为老板(main goroutine),当工厂只有老板一个人时,工厂还是可以正常运转的,所有的事情都需要老板亲历亲为呗。当我们在程序中又创建了一个goroutine时,就相当于招聘了一个员工,这样就可以把一些工作分给员工去做。 ...
很多编程语言都提供了接口,Golang接口最大的特点是它可以不必显式定义,只要一个类型实现了某个接口定义的所有方法,那它就实现了这个接口。 ...
结构体扩展允许将多个结构体组合成一个新的结构体,在新的结构体中,允许像访问自己内部成员一样访问内嵌结构体的字段和方法。 ...
函数和方法的区别 函数只是一段代码的执行过程,而方法往往会与某个类型的对象绑定。 方法是OOP的概念,在一个方法的实现中,我们可以通过特定方式访问对象的私有变量、方法,例如C类语言的this指针,Python的self等,在方法的调用过程中,对象往往被隐式传递。 ...
Panic是指程序遇到了(或者由程序主动发起)运行时错误,此时,程序中的函数会立即停止执行,然后执行已经defer过的函数,随后,程序输出错误日志信息,停止运行。 ...
defer关键字可以延迟一个函数的执行,直到这个函数返回,无论是正常的return返回,还是由于意外情况。 ...
当我们定义一个函数时,例如: func f(){ statements } 这种方式只能用在包一级,称为命名函数。这个过程相当于我们定义了一个常量f,类型为func(),并且其对应我们刚才定义的函数。 但是有些情况下这种函数定义的方式不够灵活,比如我们希望在调用函数时将某个函数作为参数传入,或者在函数返回时希望返回的是一个函数。 ...
函数声明 func funcName(param1, param2 paramType1, param3 paramType2)(resultType1, resultType2) { statements } 函数由func关键字,函数名称,参数列表,返回值列表,函数体组成。 ...
流程控制结构主要包括分支结构、循环结构、标签跳转。 ...