package main
import "fmt"
const (
Choice = iota
Blank
)
type IQuestion interface{
GetQuestionType() int
GetQuestionContent() string
AddQuestionContentPrefix(prefix string)
}
type BaseQuestion struct {
QuestionId int
QuestionContent string
QuestionType int
}
type ChoiceQuestion struct{
BaseQuestion
Options []string
}
type BlankQuestion struct{
BaseQuestion
Blank string
}
func (base *BaseQuestion) GetQuestionType() int{
return base.QuestionType
}
func (base *BaseQuestion) GetQuestionContent() string{
return base.QuestionContent
}
func (base *BaseQuestion) AddQuestionContentPrefix(prefix string) {
base.QuestionContent = prefix + base.QuestionContent
}
var ChoiceQuestionMap = make(map[int]ChoiceQuestion)
var BlankQuestionMap = make(map[int]BlankQuestion)
func initial(){
var choiceQuestion ChoiceQuestion
choiceQuestion.Options = []string{"A:0","B:1","C:2","D:3"}
choiceQuestion.QuestionId = 1001
choiceQuestion.QuestionContent = "1+1等于几?"
choiceQuestion.QuestionType = Choice
ChoiceQuestionMap[choiceQuestion.QuestionId] = choiceQuestion
var blankQuestion BlankQuestion
blankQuestion.Blank = "________"
blankQuestion.QuestionId = 1002
blankQuestion.QuestionContent = " 1公斤是多少克?"
blankQuestion.QuestionType = Blank
BlankQuestionMap[blankQuestion.QuestionId] = blankQuestion
}
func fetchFromChoiceTable(id int) (ChoiceQuestion,bool){
result,ok := ChoiceQuestionMap[id]
return result,ok
}
func fetchFromBlankTable(id int) (BlankQuestion,bool){
result,ok := BlankQuestionMap[id]
return result,ok
}
//修改返回值为IQuestion
func fetchQuestion(id int) (IQuestion, bool) {
data1,ok1 := fetchFromBlankTable(id)
data2,ok2 := fetchFromChoiceTable(id)
if ok1 {
return &data1,ok1
}
if ok2 {
return &data2,ok2
}
return nil,false
}
func showQuestion(){
if data,ok:= fetchQuestion(1001); ok {
var questionPrefix string
switch data.GetQuestionType() {
case Choice:
{
questionPrefix = "选择题: "
break
}
case Blank:
{
questionPrefix = "填空题 "
break
}
default:
{
questionPrefix = ""
break
}
}
data.AddQuestionContentPrefix(questionPrefix)
fmt.Println("data ...",data)
}
}
func main() {
initial()
showQuestion()
}
go 面向对象学习总结
最新推荐文章于 2022-11-17 15:57:47 发布