赞
踩
bilibili.com/video/BV1aU4y1h7dE/
func
方法跟其它语言的差不多,多了一个可以传 0 个 或多个参数的形式
// 无参数 无返回值 func fn() { // 方法的格式 // func funcName(arg type ...) ([arg] type ...) { // 返回值只有一个可以省略括号 // } } // 有参数 有返回值 func fn1(arg1 int, arg2 int) (a int) { // 返回参数名可以指定,这样在方法体内就不需要声明了 a = arg1 + arg2 return } // 0个或多个参数 func fn2(args ...int) { fmt.Printf("%T, %v\n", args, args) a := 0 for _, k := range args { a += k } fmt.Println("a val:", a) }
interface{}
)接口里面定义的是方法,只要这个类型(type)实现了这个接口里的方法,就是实现了这个接口,不需要显示的继承
func main() { a := 10 num := Num(a) b := Ad(num, 10) fmt.Println("b:", b) // 20 fmt.Println("a:", a)// 10 fmt.Println("num:", num)// 10 } // num值为什么没有改变呢 type It1 interface { Add(int) int Sub(int) int } type Num int func (num Num) Add(n int) int { a := int(num) a += n num = Num(a) return a } func (num Num) Sub(n int) int { a := int(num) a -= n num = Num(a) return a } func Ad(num It1, n int) int { return num.Add(n) }
func main() { a := 10 num := Num(a) fmt.Println("M ADDR : ", &num) b := Ad(&num, 10) fmt.Println("b:", b) fmt.Println("a:", a) fmt.Println("num:", num) } type It1 interface { Add(int) int Sub(int) int } type Num int func (num *Num) Add(n int) int { a := int(*num) a += n *num = Num(a) fmt.Println("ADD:", *num) return a } func (num *Num) Sub(n int) int { a := int(*num) a -= n *num = Num(a) return a } func Ad(num It1, n int) int { return num.Add(n) }
struct
)type Person struct { Name string Age uint8 Money int } func (person *Person) GetName() string { return person.Name } func (person *Person) AddIncome(money int) int { person.Money += money return person.Money } func Str() { // 声明带创建 student1 := Person{Name: "zzh", Age: 18} fmt.Printf("stu1:%+v\n", student1) var student2 Person student2.Name = "zzh2" student2.Age = 19 fmt.Printf("stu2:%+v\n", student2) AddUserMoney(&student1, 10) AddUserMoney(&student2, 20) fmt.Printf("stu1:%+v\n", student1) fmt.Printf("stu2:%+v\n", student2) } type Human interface { GetName() string // 接口定义了一个方法 GetName(), 返回一个字符串 AddIncome(int) int // 传入一个 int 类型的参数值,返回一个 int 类型 } func AddUserMoney(user Human, money int) int { totalMoney := user.AddIncome(money) return totalMoney }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。