我被阿里云美女清宵的观后感给撩了

这是她看完药神之后的观后感,看到chanel的声明,就吸引我一直把它读完。

package mainimport ( "fmt" "math/rand" "sync" "time" )var ( r = rand.New(rand.NewSource(time.Now().Unix()))disasterSignal = make(chan string) accidentSignal = make(chan string) diseaseSignal= make(chan string) )// Element : abstract factor which life consisted by type Element interface { Improve() Depress() Stable() Enable() bool BeAbleHandle(event string) bool }type Activity interface { IsSuitable(life *Life) bool Do(life *Life) Interrupted() }type Life struct { Sex string Age time.DurationHealthElement KnowledgeElement AbilityElement RelationShip Element WealthElement OtherElement ElementWorkActivity StudyActivity ExerciseActivity EntertainActivity RestActivity OtherActive ActivityisDoings []ActivityvitalitySignal chan struct{} NaturalDeathchan struct{} }func (f *Life) Join(oppositeSex *Life, love, family Element) (*Life, error) { if !love.Enable() || !family.Enable() || f.Sex == oppositeSex.Sex { return nil, fmt.Errorf("Sorry, no boby should be borned!") }boby := &Life{ Sex:[]string{"male", "female"}[r.Intn(2)], Age:0, isDoings:[]Activity{}, NaturalDeath:make(chan struct{}), vitalitySignal: make(chan struct{}), }return boby, nil }func (f *Life) Run() { go ExternalEndanger(f) // time elapses day by day for { startTime := time.Now().UTC() wg := &sync.WaitGroup{}for _, active := range []Activity{f.Study, f.Work, f.Entertain, f.Exercise, f.Rest, f.OtherActive} { if f.SuitableFor(active) { wg.Add(1) go func(activity Activity) { defer wg.Wait() activity.Do(f) }(active) } }select { case <-f.NaturalDeath: f.Close() fmt.Println("Life is short, make it colourful and cherish the love around all!") return case <-f.vitalitySignal: fmt.Println("记得买保险!") return case <-time.After(24*time.Hour - time.Now().UTC().Sub(startTime)): fmt.Println("One day went by...") } //wg.Wait() f.Age += 24 * time.Hour }fmt.Println("Goodbye, life!") }func (f *Life) Somehow() { // happened something to effect one to reach some life stage }func (f *Life) SuitableFor(active Activity) bool { return active.IsSuitable(f) }func (f *Life) Survive(event string) bool { for _, e := range []Element{f.Health, f.Knowledge, f.Ability, f.RelationShip, f.Wealth, f.OtherElement} { if !e.BeAbleHandle(event) { return false } }return true }func (f *Life) Close() { for _, doing := range f.isDoings { doing.Interrupted() }close(f.vitalitySignal) }var female = LifeFromSomeWhere("female") var male = LifeFromSomeWhere("male")func ExternalEndanger(f *Life) { for { event := "" select { case event = <-diseaseSignal: case event = <-disasterSignal: case event = <-accidentSignal: }if !f.Survive(event) { f.Close() return } } }func LifeFromSomeWhere(sex string) *Life { life := &Life{Sex: sex} life.Somehow()return life }func main() { // I don't know the question of "鸡生蛋 or 蛋生鸡"... newLife, err := female.Join(male, ElementImp{Type: "love"}, ElementImp{Type: "family"}) if err == nil { newLife.Run() } }

【我被阿里云美女清宵的观后感给撩了】原贴地址是阿里云云栖社区,拼命三郎OL引用自 程序媛比码大赛 不秀美颜 秀代码-清宵参与的聚能聊话题-云栖社区

    推荐阅读