詳解用Go語言實(shí)現(xiàn)工廠模式(Golang經(jīng)典編程案例)
golang中的struct沒有構(gòu)造函數(shù),一般可以使用工廠模式來解決這個(gè)問題。這個(gè)模式本身很簡單而且使用在業(yè)務(wù)較簡單的情況下。一般用于小項(xiàng)目或者具體產(chǎn)品很少擴(kuò)展的情況(這樣工廠類才不用經(jīng)常更改)。
代碼結(jié)構(gòu)如下:分別有main.go和student.go兩個(gè)文件。

在student.go中:
package model
//定義一個(gè)結(jié)構(gòu)體
type student struct{
Name string
score float64
}
//因?yàn)閟tudent結(jié)構(gòu)體首字母是小寫,因此是只能在model使用
//我們通過工廠模式來解決r
func NewStudent(n string, s float64) *student {
return &student{
Name : n,
score : s,
}
}
//如果score字段首字母小寫,則,在其它包不可以直接方法,我們可以提供一個(gè)方法
func (s *student) GetScore() float64{
return s.score //ok
}
在main.go中:
package main
import (
"fmt"
"factory/model"
)
func main() {
//創(chuàng)建要給Student實(shí)例
// var stu = model.Student{
// Name :"tom",
// Score : 78.9,
// }
//定student結(jié)構(gòu)體是首字母小寫,我們可以通過工廠模式來解決
var stu = model.NewStudent("tom~", 98.8)
fmt.Println(*stu) //&{....}
fmt.Println("name=", stu.Name, " score=", stu.GetScore())
}
執(zhí)行結(jié)果如下圖所示:

到此這篇關(guān)于詳解用Go語言實(shí)現(xiàn)工廠模式(Golang經(jīng)典編程案例)的文章就介紹到這了,更多相關(guān)Go語言工廠模式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
深入了解Golang網(wǎng)絡(luò)編程N(yùn)et包的使用
net包主要是增加?context?控制,封裝了一些不同的連接類型以及DNS?查找等等,同時(shí)在有需要的地方引入?goroutine?提高處理效率。本文主要和大家分享下在Go中網(wǎng)絡(luò)編程的實(shí)現(xiàn),需要的可以參考一下2022-07-07
Golang在整潔架構(gòu)基礎(chǔ)上實(shí)現(xiàn)事務(wù)操作
這篇文章在 go-kratos 官方的 layout 項(xiàng)目的整潔架構(gòu)基礎(chǔ)上,實(shí)現(xiàn)優(yōu)雅的數(shù)據(jù)庫事務(wù)操作,需要的朋友可以參考下2024-08-08
在Go程序中實(shí)現(xiàn)服務(wù)器重啟的方法
這篇文章主要介紹了在Go程序中實(shí)現(xiàn)服務(wù)器重啟的方法,由于很多人盲目崇拜谷歌"親爹",Go語言在國內(nèi)有著不尋常的人氣,需要的朋友可以參考下2015-06-06
簡單了解Go語言中函數(shù)作為值以及函數(shù)閉包的使用
這篇文章主要介紹了簡單了解Go語言中函數(shù)作為值以及函數(shù)閉包的使用,是golang入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2015-10-10
Golang實(shí)現(xiàn)http server提供壓縮文件下載功能
這篇文章主要介紹了Golang實(shí)現(xiàn)http server提供壓縮文件下載功能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01

