Go基础之面向对象(结构体与方法篇)

本文介绍了Go语言中的面向对象特性,重点讨论了结构体的创建、初始化和工厂方法。Go语言不支持继承和多态,但可以通过接口实现类似功能。文中详细阐述了结构体的声明、初始化、工厂方法以及方法的值传递和指针传递,并通过树的中序遍历展示了结构体方法的实际应用。
摘要由CSDN通过智能技术生成
  • go语言的面向对象相对简单,只支持封装,不支持继承和多态,go中用面向接口来做继承和多态的任务
  • go中没有class ,只有struct
  • struct的创建

type treeNode struct {
    value int
    left, right *treeNode
}

  • struct的声明和初始化

//声明一个结构体类型
    var root treeNode
    
    //初始化方式一
    root = treeNode{value:3}


    //初始化方式二
    root.left = &treeNode{}
    root.right = &treeNode{5,nil,nil}


    //初始化方式三
    root.right.left = new(treeNode)   
    //new(),只接受一个参数,这个参数是一个类型,分配好内存后,返回一个指向该类型内存地址的指针。同时请注意它同时把分配的内存置为零,也就是类型的零值。
    //这里,root结构本身,而root.left是一个地址,在go中不论地址含是结构本身,一律用"."来访问成员,  而C++中,访问地址的成员要用"->"


    //初始化方法四 使用工厂方法
    root.right.right = creatNode(4) 
    
    nodes := []treeNode{
        {value:3},          //这里相当于 treeNode{value:3}, 前面的treeNode省略掉了
        {},
        {6,nil,&root},
    }    
    fmt.Println(nodes)   //输出结果: [{3 <nil> <nil>} {0 <nil> <nil>} {6 <nil> 0xc420090020}] 

  • struct的工厂化方法,go的结构体没有构造函数一说,但我们可以给我们定义的结构体创建一个工厂方法,用来初始化结构体
  • 工厂方法返回了一个局部变量地址

func cre

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值