摘要:
Go程序用error表示错误状态。 error类型是一个类似fmt.Stringer的内置接口 type error interface { Error() string } (与fmt.Stringer, fmt包在打印值错误的值时查找error接口。) 函数通常返回一个error,调用代码应该通 阅读全文
摘要:
package main import ( "fmt" "strings" "strconv" ) type IPAddr [4]byte func (ip IPAddr) String() string{ array := make([]string, len(ip)) for i, b := r 阅读全文
摘要:
Stringers 类似java 中的toString type Stringer interface { String() string } Stringer是一种可以将自身描述为字符串的类型。fmt包(和许多其他包)寻找这个接口来打印值。 package main import "fmt" ty 阅读全文
摘要:
类型断言提供对接口值的底层具体值的访问。 t := i.(T) 该语句断言接口值i持有具体类型T,并将底层T值赋给变量t。 如果i不持有T,该语句将触发恐慌panic。 要测试接口值是否包含特定类型,类型断言可以返回两个值:底层值和报告断言是否成功的布尔值。 t, ok := i.(T) 如果i持有 阅读全文
摘要:
有两个理由使用指针接收器 第一个是为了让方法可以修改它的接收器指向的值。 第二种方法是避免在每次方法调用时复制值。例如,如果接收方是一个大的结构体,这可能会更有效率。 通常,给定类型上的所有方法都应该具有值或指针接收器,但不能两者混合。(我们将在接下来的几页中看到原因。) 接口 接口是定义的一组方法 阅读全文
摘要:
函数 值参数是值传递 package main import ( "fmt" ) type Vertex struct { X, Y float64 } func update(v Vertex){ v.X = 2 v.Y = 2 } func main() { v := Vertex{3, 4} 阅读全文