• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Go方法和接收者

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
 1 package main
 2 
 3 import (
 4     "fmt"
 5 )
 6 
 7 //面向对象
 8 //go仅支持封装,不支持继承和多态
 9 //go语言中没有class,只要struct
10 //不论地址还是结构本身,一律使用.来访问成员
11 //要改变内容必须使用指针接收者
12 //结构过大考虑指针接收者
13 //值接收者是go语言特有
14 //封装 15 //名字一般使用CamelCase 16 //首字母大写: public 17 //首字母小写:private 18 19 //20 //每个目录一个包,包名可以与目录不一样 21 //main包包含可执行入口,只有一个main包 22 //为结构定义的方法必须放在同一个包内,但是可以是不同文件 23 24 25 type treeNode struct { 26 value int 27 left, right *treeNode 28 } 29 30 func (node treeNode) print() { //显示定义和命名方法接收者(括号里) 31 32 fmt.Print(node.value) //只有使用指针才可以改变结构内容 33 fmt.Println() 34 } 35 36 func (node *treeNode) setValue ( value int) { //使用指针作为方法接收者 37 if node == nil { 38 fmt.Println("setting value to nil node") //nil指针也可以调用方法 39 return 40 } 41 node.value = value 42 } 43 44 func (node *treeNode ) traverse(){ 45 if node == nil{ 46 return 47 } 48 node.left.traverse() 49 node.print() 50 node.right.traverse() 51 } 52 53 func main() { 54 var root treeNode 55 fmt.Println(root) //{0 <nil> <nil>} 56 57 root = treeNode{value:3} 58 root.left = &treeNode{} 59 root.right = &treeNode{5,nil,nil} 60 root.right.left = new(treeNode) 61 62 nodes := []treeNode { 63 {value: 3}, 64 {}, 65 {6,nil,&root}, 66 } 67 fmt.Println(nodes) //[{3 <nil> <nil>} {0 <nil> <nil>} {6 <nil> 0xc04205a3e0}] 68 69 root.print() // 3 70 fmt.Println() 71 root.right.left.setValue(100) 72 root.right.left.print() //100 73 fmt.Println() 74 75 var pRoot *treeNode 76 pRoot.setValue(200) //setting value to nil node 77 pRoot = &root 78 pRoot.setValue(300) 79 pRoot.print() //300 80 81 root.traverse() //300 0 300 100 5 82 }

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Go语言之捧腹网爬虫案例发布时间:2022-07-10
下一篇:
Go的学习append的使用发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap