前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第四章、Go-面向“对象”

第四章、Go-面向“对象”

作者头像
zhang_derek
发布2019-08-06 14:53:35
3150
发布2019-08-06 14:53:35
举报
文章被收录于专栏:有趣的django

4.1.结构体和方法

(1)go语言的面向对象

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

(2)struct的创建

代码语言:javascript
复制
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创建方法

代码语言:javascript
复制
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)使用指针作为方法接收者,改变结构内容

代码语言:javascript
复制
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包包含可执行入口
  • 为结构定义的方法必须放在同一个包内
  • 可以是不同文件
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-08-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 4.1.结构体和方法
  • 4.2.包和封装
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档