[golang note] 错误处理】的更多相关文章

错误处理 • 错误处理的标准模式 √ golang错误处理的标准模式:error接口. √ golang函数如果要返回错误,规范上是将error作为多返回值中的最后一个,但这并非是强制要求. ▶ error接口 type error interface { Error() string } ▶ 内置的error类型使用 ▪ 语法如下 func 函数名(参数列表) (返回值列表, err error) { // 函数体 } ▪ 错误处理 例如我们有一个这样的函数: func Foo(param i…
这个其实不是错误,2个写法没有区别.-2015.11.22 认识golang也不少时间了,也做过几个项目.最近发现之前用golang写的一个服务,内存涨得比较快,一直没找出来原因来.今天把疑惑发到群里,经过golang学习班的童鞋的指点,发现我一个常用的错误. 在不少golang入门的文章上,用并发的例子一般是这样写的: package main import ( "fmt" "time" ) func main() { messages := make(chan…
LiteIDE(windows) • golang安装 ▶ 下载对应操作系统的版本并安装,下载地址:http://www.golangtc.com/download,譬如这里下载的是go1.6.windows-amd64.msi. ▶ 环境变量配置,这里只需要配置GOROOT.GOBIN和GOPATH三个环境变量即可. GOBIN     : golang安装后根目录下的bin目录,即$GOROOT\bin\,windows平台下默认为c:\go\bin,安装过程中会由安装程序自动添加到PATH…
net包 • 官方文档 http://godoc.golangtc.com/pkg/net/ Package net provides a portable interface for network I/O, including TCP/IP, UDP, domain name resolution, and Unix domain sockets. net包中提供了一系列可移植的网络I/O接口,其中包含了TCP/IP.UDP.域名解析和Unix域套接字. RPC • RPC定义 RPC,Re…
侵入式接口 √ 在其他一些编程语言中,接口主要是作为不同组件之间的契约存在,即规定双方交互的规约. √ 对契约的实现是强制的,即必须确保用户的确实现了该接口,而实现一个接口,需要从该接口继承. √ 如果一个类实现了接口A,即便另一个接口B与A的方法列表相同,甚至连接口名都相同,但位于不同的命名空间下,那么编译器并不认为这两个接口是一样的. √ 所谓侵入的主要表现在于实现继承接口的类需要明确声明自己实现自某个接口. √ 侵入式接口常纠结的问题是:应该提供哪些接口好呢?如果两个类实现了相同的接口,应…
匿名组合 golang也提供了继承机制,但采用组合的文法,因此称为匿名组合.与其他语言不同, golang很清晰地展示出类的内存布局是怎样的. • 非指针方式组合 ▶  基本语法 // 基类 type Base struct { // 成员变量 } func (b *Base) 函数名(参数列表) (返回值列表) { // 函数体 } // 派生类 type Derived struct { Base // 成员变量 } func (b *Derived) 函数名(参数列表) (返回值列表) {…
普通函数定义 √ golang函数基本组成:关键字func.函数名.参数列表.返回值.函数体和返回语句. • 语法如下 func 函数名(参数列表) (返回值列表) { // 函数体 } • 示例如下 package main import "fmt" import "errors" func Add(a int, b int) (ret int, err error) { || b < { // 假定只支持两个非负数字的加法 err = errors.New…
基础类型 √ golang内建基础类型有布尔类型.整数类型.浮点类型.复数类型.字符串类型.字符类型和错误类型. 复合类型 √ golang支持的复合类型有指针.数组.数组切片.字典.通道.结构体和接口.…
数组 √ golang数组包含的每个数据称为数组元素(element),数组包含的元素个数被称为数组长度(length). √ golang数组的长度在定义后不可更改,并且在声明时可以是一个常量或常量表达式(在编译期即可计算结果的表达式).golang数组长度是一个内置常量,可以用len()函数来获取. √ golang数组是一个值类型,在赋值和作为参数传递时都将产生一次复制动作,因此在函数体中无法修改传入的数组的内容. • 数组声明和初始化 ▶ 数组声明 ▪ 语法如下 // 数组声明 var…
变量 • 变量声明 √ golang变量声明的关键字为var. √ golang变量声明时类型信息放置在变量名之后. ▶ 单个变量声明 ▪ 语法如下 var name type ▪ 示例如下 var v1 int // 整形 var v2 *int // 指针 var v3 string // 字符串 var v4 []int // 数组切片 ]int // 数组 var v6 map[string]int // map var v8 func(a int) int // 函数 var v7 s…