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

简介: 这是她看完药神之后的观后感,看到chanel的声明,就吸引我一直把它读完。package mainimport ( "fmt" "math/rand" "sync" "time")var ( r = rand.

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

package main

import (
    "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.Duration

    Health       Element
    Knowledge    Element
    Ability      Element
    RelationShip Element
    Wealth       Element
    OtherElement Element

    Work        Activity
    Study       Activity
    Exercise    Activity
    Entertain   Activity
    Rest        Activity
    OtherActive Activity

    isDoings []Activity

    vitalitySignal chan struct{}
    NaturalDeath   chan 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引用自 程序媛比码大赛 不秀美颜 秀代码-清宵参与的聚能聊话题-云栖社区

相关文章
|
Python
Pythyon|当中秋遇上国庆
Pythyon|当中秋遇上国庆
211 0
|
移动开发
阿云漫画 | 一片绿叶,让冬奥火炬“飞扬”
编者按: 冬奥会倒计时开始了!设计团队曾为如何呈现火炬“飞扬”的最佳形态犯难,直到看到一片线条灵动轻盈的树叶,大家的灵感被点燃,参考“大自然造就的曲线张力和美感”,团队调整了120多版模型,不断打磨细节,终于让火炬“活”了起来。
144 0
|
JSON 移动开发 前端开发
情人节福利,撩妹神器恋爱话术库它来了~
情人节福利,撩妹神器恋爱话术库它来了~
755 0
情人节福利,撩妹神器恋爱话术库它来了~
|
人工智能 编解码 达摩院
中秋,和千年前的朋友一起上央视
昨天,杭州图书馆和达摩院的合作项目「AI算法复现古人“吟咏”中秋画面」,获得了CCTV13的报道。
503 0
|
编解码 达摩院 算法
圣诞节,在奶奶身边云烤火!
“听这声音仿佛回到了小时候,不仅脑海里有画面,甚至还有温度味道。” “隔着屏幕已经感受到火光和扑面而来的温暖了” “没想到在淘宝直播间也能听到asmr”
圣诞节,在奶奶身边云烤火!
|
开发者
荐书有礼!今天,你读书了吗?
4月23日,“世界读书日”,今天,你读书了吗?请把曾经影响你的书写下来,曾经弥足珍贵记录下来,让它的能量继续释放,影响更多的同行人!阿里云开发者社区“记录阅读之路,影响同行之人!”精选好书推荐留言,等你来参与!
荐书有礼!今天,你读书了吗?
|
消息中间件 分布式计算 Hadoop
除了吃月饼,中秋节还能干啥? | 9月12号栖夜读
今天的首篇文章,讲述了:明天八月十五,团圆夜花好月圆之际!除了吃月饼,还能干啥?
2976 0
新海诚画集[秒速5センチメートル:樱花抄·铁道]
樱花抄·铁道 樱花抄·铁道 樱花抄·铁道 樱花抄·铁道 樱花抄·铁道 樱花抄·铁道 樱花抄·铁道 樱花抄·铁道 樱花抄·铁道 樱花抄·...
1176 0
新海诚画集[秒速5センチメートル:樱花抄·學舍]
樱花抄·學舍 樱花抄·學舍 樱花抄·學舍 樱花抄·學舍 樱花抄·學舍 樱花抄·學舍 樱花抄·學舍 樱花抄·學舍 樱花抄·學舍 樱花抄·...
1093 0