zoukankan      html  css  js  c++  java
  • 第四章、Go-面向“对象”

    4.1.结构体和方法

    (1)go语言的面向对象

    • go仅支持封装,不支持继承和多态
    • go语言没有class,只有struct

    (2)struct的创建

    package main
    
    import "fmt"
    
    func main() {
    	type treeNode struct {
    		value int
    		left, right *treeNode    //指针类型
    	}
    	//不论地址还是结果本身,都用“.” 来访问成员
    	var root treeNode            //root是一个实例
    	root = treeNode{value: 3}
    	fmt.Println(root)            //{3 <nil> <nil>}
    
    	root.left = &treeNode{}
    	fmt.Println(root)          //{3 0x1104c0f0 0x1104c100}
    }
    

    (3)为struce创建方法

    package main
    
    import "fmt"
    
    type treeNode struct {
    	value int
    }
    
    //为结构体创建方法
    func (node treeNode) print() {
    	fmt.Println(node.value)
    }
    
    func main() {
    	var root treeNode
    	root = treeNode{value: 3}
    	root.print()    //3
    }
    

    (4)使用指针作为方法接收者,改变结构内容

    package main
    
    import "fmt"
    
    type treeNode struct {
    	value int
    }
    
    //为结构体创建方法
    func (node treeNode) print() {
    	fmt.Println(node.value)
    }
    
    //不适用指针“*treeNode',则不能改变value的值
    //func (node treeNode) setValue(value int)  {
    //	node.value = value
    //}
    
    
    //只有使用只用指针才可以改变结构体内容
    func (node *treeNode) setValue(value int)  {
    	node.value = value
    }
    
    func main() {
    	var root treeNode
    	root = treeNode{value: 3}
    	root.print()      //3
    	root.setValue(6)
    	root.print()     //6
    }
    

    4.2.包和封装

    (1)封装

    • 首字母大写:public
    • 首字母小写:private

    (2)包

    • 每个目录一个包
    • main包包含可执行入口
    • 为结构定义的方法必须放在同一个包内
    • 可以是不同文件
  • 相关阅读:
    origin 8.5 曲线拟合,延长曲线范围
    赤手空拳编写C#代码
    Vmware 10安装MAC OS X 10.9备忘
    Contest 1445
    Contest 1428
    Contest 1435
    Contest 991
    CSP-SJX2019 解题报告
    【BZOJ4817】【SDOI2017】树点染色
    codeforce 804B Minimum number of steps
  • 原文地址:https://www.cnblogs.com/derek1184405959/p/11296304.html
Copyright © 2011-2022 走看看