Golang 工厂模式

Jackey Golang 3,588 次浏览 , 没有评论

student.go

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
package model
type student struct {
Name string
age int
}
// 结构体student 首字母小写,因此只能在 model 内部使用
// 如果想外部调用,我们可以通过工厂模式解决
func NewStudent(name string, age int) *student {
return &student{
Name: name,
age: age,
}
}
// 如果 score 字段首字母小写,则其他包不可以调用,我们可以提供一个方法来调用
func (s *student) GetAge() int {
return s.age
}
package model type student struct { Name string age int } // 结构体student 首字母小写,因此只能在 model 内部使用 // 如果想外部调用,我们可以通过工厂模式解决 func NewStudent(name string, age int) *student { return &student{ Name: name, age: age, } } // 如果 score 字段首字母小写,则其他包不可以调用,我们可以提供一个方法来调用 func (s *student) GetAge() int { return s.age }
package model

type student struct {
  Name string
  age int
}

// 结构体student 首字母小写,因此只能在 model 内部使用
// 如果想外部调用,我们可以通过工厂模式解决
func NewStudent(name string, age int) *student {
  return &student{
    Name: name,
    age:  age,
  }
}

// 如果 score 字段首字母小写,则其他包不可以调用,我们可以提供一个方法来调用
func (s *student) GetAge() int {
  return s.age
}

main.go

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
package main
import (
"fmt"
"tianqi-api/tests/study/factory/model"
)
func main() {
var stu = model.NewStudent("gopher.cc", 10)
fmt.Println("name =", stu.Name, " age =", stu.GetAge())
}
package main import ( "fmt" "tianqi-api/tests/study/factory/model" ) func main() { var stu = model.NewStudent("gopher.cc", 10) fmt.Println("name =", stu.Name, " age =", stu.GetAge()) }
package main

import (
  "fmt"
  "tianqi-api/tests/study/factory/model"
)

func main()  {
  var stu = model.NewStudent("gopher.cc", 10)

  fmt.Println("name =", stu.Name, " age =", stu.GetAge())
}

 

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Go