Go__工厂模式

Go__工场模式:
  • 公有结构体的调用
package mode
//定义一个结构体
type Student struct {
	Name  string
	Score float64
}
package main
import (
	"fmt"
	"go_code/结构体/factory/mode"
)

func main() {
	var stu = mode.Student{
		Name:  "tom",
		Score: 90.5,
	}
	fmt.Println(stu)
  • 当结构体改为私有,则其他文件将不能调用,此时可用工场模式:
package mode
type student struct { //因为student结构体首字母是小写,因此只能在model使用
	Name string
	Age  int32
}

在mode包文件下:
通过工厂模式来解决
func Newstudent(n string, a int32) student {
  return student{
    Name: n,
    Age: a,
}
}

package main

import (
	"fmt"
	"go_code/结构体/factory/mode"
)
var stu2 = mode.Newstudent("stom", 21)
	fmt.Println(stu2)
	fmt.Println(stu2.Name, stu2.Age)
  • 当结构体为私有,结构体属性也为私有时:
    main函数的 fmt.Println(stu2.name, stu2.age) 将不能使用
package mode

type student struct {
	name string
	age  int32
}
func Student(n string, a int32) *student {//设为指针类型命名,也可不设
	return &student{
		name: n,
		age:  a,
	}
}

func (m student) Getname() string {
  return m.name
}
func (m student) Getage() int32 {
  return m.age
}

package main

import (
	"fmt"
	"go_code/结构体/factory/mode"
)
var mon = mode.Student("孙悟空", 500)
	fmt.Println(*mon)
	fmt.Println("mon's name : ", (*mon).Getname(), "\tmon's age : ", (*mon).Getage())

此时的Getname()与Getage()不需要包名.调用,因为是结构体student的方法,实例化的mon即可调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值