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

简介: 这是她看完药神之后的观后感,看到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引用自 程序媛比码大赛 不秀美颜 秀代码-清宵参与的聚能聊话题-云栖社区

相关文章
|
程序员
七夕来袭——属于程序员的浪漫
七夕来袭——属于程序员的浪漫
七夕来袭——属于程序员的浪漫
|
JSON 移动开发 前端开发
情人节福利,撩妹神器恋爱话术库它来了~
情人节福利,撩妹神器恋爱话术库它来了~
708 0
情人节福利,撩妹神器恋爱话术库它来了~
|
机器学习/深度学习 算法 测试技术
面试官在“逗”你系列:到底应该怎么爬楼梯?! | 牛气冲天新年征文
算法题是在面试过程中考察候选人逻辑思维能力、手写代码能力的一种方式,因为有一句古话说的好:“说一千道一万,不如写段代码看一看”。今天我们就来个单刀直入,直奔主题,从一个真实面试题到底怎么爬楼梯来聊一聊算法中的动态规划 。
193 0
|
人工智能 编解码 达摩院
中秋,和千年前的朋友一起上央视
昨天,杭州图书馆和达摩院的合作项目「AI算法复现古人“吟咏”中秋画面」,获得了CCTV13的报道。
482 0
中秋,和千年前的朋友一起上央视
|
开发者
荐书有礼!今天,你读书了吗?
4月23日,“世界读书日”,今天,你读书了吗?请把曾经影响你的书写下来,曾经弥足珍贵记录下来,让它的能量继续释放,影响更多的同行人!阿里云开发者社区“记录阅读之路,影响同行之人!”精选好书推荐留言,等你来参与!
荐书有礼!今天,你读书了吗?
|
云安全 安全
今天和朋友们做了五道新春大餐!
农历新年将至 安全君携几位好伙伴们, 给大家献上几道“新春大餐”。 愿您在新的一年里, 安心、顺心、省心! 第一道: 阿里云与PCCW Global  共同为全球用户提供DDoS防御服务 让更多企业的业务, 穿上稳定、有效的防护铠甲。
1871 0
《大灌篮》观后感——大家的评论引起的思考。
今天休息,看了一下《大灌篮》,感觉挺好玩的。转几句台词记录一下。 搞笑部分 1、方世杰拿球,现场观众疯狂的欢呼,方世杰要灌篮,不要给对手任何的机会,伟大的第一大学的控球后卫,他代表了第一大学的光荣传统,乔丹科比Magic Johnson,在这一刻灵魂附体,方世杰一个人,他代表了第一大学篮球的悠久...
1418 0
新海诚画集[秒速5センチメートル:樱花抄·春]
無題-スキャンされた画像 1 無題-スキャンされた画像 2 無題-スキャンされた画像 3 無題-スキャンされた画像 4 無題-スキャンされた画像 5 無題-スキャンされた画像 6 ...
1293 0