设为首页 加入收藏

TOP

Go基础系列:Go中的方法(三)
2018-11-01 18:12:17 】 浏览:325
Tags:基础 系列 方法
其内嵌套Phone和Camera两个struct,那么cameraPhone就可以获取来自Phone的call()方法进行拨号通话,获取来自Camera()的takeAPic()方法进行拍照。

面向对象的语言都强烈建议不要使用多重继承,甚至有些语言本就不支持多重继承。至于Go是否要使用"多重继承",看需求了,没那么多限制。

重写String()方法

fmt包中的Println()、Print()和Printf()的%v都会自动调用String()方法将待输出的内容进行转换。

可以在自己的struct上重写String()方法,使得输出这个示例的时候,就会调用它自己的String()。

例如,定义person的String(),它将person中的name和age结合起来:

package main

import (
    "fmt"
    "strconv"
)

type person struct {
    name string
    age  int
}

func (p *person) String() string {
    return p.name + ": " + strconv.Itoa(p.age)
}

func main() {
    p := new(person)
    p.name = "longshuai"
    p.age = 23
    // 输出person的实例p,将调用String()
    fmt.Println(p)
}

上面将输出:

longshuai: 23

一定要注意,定义struct的String()方法时,String()方法里不要出现fmt.Print()、fmt.Println以及fmt.Printf()的%v,因为它们自身会调用String(),会出现无限递归的问题。

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Go基础系列:接口类型探测和type-.. 下一篇for 循环变量作用域的小坑

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目