英文原文在此www.nada.kth.se/~snilsson/go_for_java_programmers
译文同步至www.waylau.com
http://bbs.gocn.im/thread-89-1-1.html
=================接上文,以下正文====================
Panic and recover(恐惧和恢复)panic
(恐慌)是一个运行时错误,展开goroutine的堆栈,一路运行任何递延的功能,然后停止程序。恐慌与Java异常相似,但只适用于运行时的错误,如一个
nil
指针或试图索引数组越界。 Go程序使用内置的
error
类型
(详见上文)为了表示如文件结束等事件。
可以使用内置的recover
(恢复),重新获得控制权的恐慌的goroutine和恢复正常运行。呼叫recover
停止展开,并返回传入的参数panic
。因为只有运行的未展开代码,内部含有延迟函数,recover
只在内递延的函数有效。如果的goroutine是没有恐慌,recover
返回nil
。
Go允许用go
开启一个新的执行线程--goroutine。它运行在不同的,新创建的的goroutine中。在一个程序中的所有goroutine共享相同的地址空间。
Goroutines是轻量级的,只占用比堆栈分配多一点的空间。堆栈开始小和成长的分配和释放堆(heap)的要求。内部goroutines像进行了复用多个操作系统线程的协程。您不必担心这些细节。
go list.Sort() // Run list.Sort in parallel; don’t wait for it.
Go处理文字的函数,可以作为结束,在处理go
时很强大
func Publish(text string, delay time.Duration) { go func() { time.Sleep(delay) fmt.Println(text) }() // Note the parentheses. We must call the function. }
变量text
和delay
在周围函数和函数文字之间共享;只要它们都可以访问,它们就存在。
管道通过指定的元素类型的值来提供两个goroutine同步执行和沟通的机制。
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?