// 此函数用于打开一个文件
// 返回的第二个值为 error 类型
func Open(name string) (file *File, err error)
简单的例子:
package main
import (
"fmt"
"os"
)
func main() {
_, err := os.Open("test.txt")
// 如果 err 不为 nil 表示存在错误
if err != nil {
fmt.Println(err)
}
}
创建一个 error 值的最简单方式是使用 errors.New 函数:
func Sqrt(f float64) (float64, error) {
if f < 0 {
// 出错时返回一个错误
return 0, errors.New("math: square root of negative number")
}
// ...
}
我们也可以定义一个新的 error 的实现(也就是实现接口 error):
type NegativeSqrtError float64
func (f NegativeSqrtError) Error() string {
return fmt.Sprintf("math: square root of negative number %g", float64(f))
}
匿名域
结构体中可以存在只有类型而没有名字的域,它们被叫做匿名域。例如:
struct {
T1
*T2
}
一个结构体的匿名域中的域或者方法可以被此结构体实例直接访问:
package main
import "fmt"
type Car struct {
wheelCount int
}
func (car *Car) numberOfWheels() int {
return car.wheelCount
}
type Ferrari struct {
Car
}
func main() {
f := Ferrari{Car{4}}
fmt.Println("A Ferrari has this many wheels: ", f.numberOfWheels())
}










