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

速战速决 go - go 面向对象: 结构体(为结构体定义方法,使用工厂模式初始化结构体) ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

速战速决 go https://github.com/webabcd/GoSample
作者 webabcd

示例如下:

oop/struct3.go

// go 面向对象 - 结构体(为结构体定义方法,使用工厂模式初始化结构体)

package oop

import "fmt"

func Struct3Sample() {
	// 为结构体指针添加方法
	struct3_sample1()
	// 为结构体指针指向的值添加方法
	struct3_sample2()
	// 使用工厂模式初始化结构体
	struct3_sample3()
}

func struct3_sample1() {
	a := &struct31{}

	// 调用结构体 struct31 的 add() 方法
	a.add(0)
	a.add(1)
	a.add(2)

	fmt.Println(a.items) // [0 1 2]
}

type struct31 struct {
	items []int
}

// 为结构体 struct31 定义一个 add() 方法,这玩意叫做接收器(receiver)
// 这里是为结构体指针添加方法
func (s *struct31) add(item int) {
	s.items = append(s.items, item)
}

func struct3_sample2() {
	a := struct32{1, 2}
	b := struct32{3, 4}

	// 调用结构体 struct32 的 add() 方法
	c := a.add(b)
	fmt.Println(c) // {4 6}
}

type struct32 struct {
	x int
	y int
}

// 为结构体 struct32 定义一个 add() 方法,这玩意叫做接收器(receiver)
// 这里是为结构体指针指向的值添加方法
func (s struct32) add(other struct32) struct32 {
	return struct32{s.x + other.x, s.y + other.y}
}

// 演示如何使用工厂模式初始化结构体
func struct3_sample3() {
	var a *struct33 = create_struct33("webabcd")
	a.age = 40
	fmt.Println(a) // &{webabcd 40}
}

type struct33 struct {
	name string
	age  int
}

// 工厂模式
func create_struct33(name string) *struct33 {
	return &struct33{
		name: name,
	}
}

速战速决 go https://github.com/webabcd/GoSample
作者 webabcd


鲜花

握手

雷人

路过

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

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

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

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

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