Go 语言中的错误处理(Let's Go 三十二)
除了上面的 errors.New 用法之外,我们还可以实现 error 接口自定义一个 Error() 方法,来返回自定义的错误信息。
除了上面的 errors.New 用法之外,我们还可以实现 error 接口自定义一个 Error() 方法,来返回自定义的错误信息。
无缓冲信道 Channel 是无法保存任何值的,该类型信道要求 发送 goroutine 和 接受 goroutine 两者同时准备好,这样才能完成发送与接受的操作。
通过上篇文章,我们知道该怎么声明信道 Channel,以及发送和读取数据。然而本文要讲的是单向Channel
,可单向信道Channel到底是怎样的呢?
Channel 是进程内的通信方式,因此通过 channel 传递对象的过程和调用函数时的参数传递行为比较一致,比如也可以传递指针等。如果需要跨进程通信,我们建议用分布式系统的方法来解决,比如使用 Socket 或者 HTTP 等通信协议。Go 语言对于网络方面也有非常完善的支持。
并发与并行并不相同,并发主要由切换时间片来实现“同时”运行,并行则是直接利用多核实现多线程的运行,Go程序可以设置使用核心数,以发挥多核计算机的能力。
所谓空接口就是没有方法集,以至于任何类型都可实现它,换言之,也就是空接口可以保存任意类型的值。
如果Type
是具体某个类型,类型断言会检查 varl
的动态类型是否等于具体类型 Type
。如果检查成功,类型断言返回的结果是 varl
的动态值,其类型是 Type
。 - 如果 Type
是接口类型,类型断言会检查 varl
的动态类型是否满足
要想实现Go
中的接口,类型实现接口方法集的方法,其类型实现的方法签名必须要与接口中的方法集中方法签名一样。 类型不需要显式声明它实现了某个接口:接口被隐式地实现。多个类型可以实现同一个接口。
Go中的方法是一种特殊的函数,以实现类型与函数进行绑定
Go
中的结构体与c/c++
语言中是差不多,然而对没有接触过c/c++
语言的话,对在看到结构体这一复合类型
是新鲜事物。