A Tour of Go Methods continued

In fact, you can define a method on any type you define in your package, not just structs.

You cannot define a method on a type from another package, or on a basic type.

package main 

import (
    "fmt"
    "math"
)

type MyFloat float64

func (f MyFloat) Abs() float64 {
    if f < 0 {
        return float64(-f)
    }
    return float64(f)
}

func main() {
    fmt.Println(math.Sqrt2)
    f := MyFloat(-math.Sqrt2)
    fmt.Println(f.Abs())
}

很像OC中的类别

posted @ 2014-10-28 18:59  wuhn  阅读(114)  评论(0编辑  收藏  举报