• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

5.21Go秘籍:异步收割,永葆单身

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

[本文出自天外归云的博客园]

今天是5.21,是现代的年轻人喜爱过的节日,也是玫瑰花的葬礼。身为人生工程师,又有几人曾用代码谱写爱的史诗?

Keep something in my mind,异步永葆单身秘诀:

package main

import (
	"log"
	"testing"

	"github.com/stretchr/testify/assert"
)

// Girl 女孩
type Girl struct {
	// Name 名字
	Name string
}

// AcceptConfess 接收表白
func (girl *Girl) AcceptConfess(boy Boy) {
	log.Printf("%+v接收了%+v的表白", girl.Name, boy.Name)
	boy.LovePraiseChan <- LovePraise{From: girl.Name, Words: "同意"}
}

// RefuseConfess 拒绝表白
func (girl *Girl) RefuseConfess(boy Boy) {
	log.Printf("%+v拒绝了%+v的表白", girl.Name, boy.Name)
	boy.LovePraiseChan <- LovePraise{From: girl.Name, Words: "不同意"}
}

// Boy 男孩
type Boy struct {
	// Name 名字
	Name string
	// Status 状态(单身或非单身)
	Status string
	// LoveChan 爱的表白通道
	LovePraiseChan chan LovePraise
}

// LovePraise 爱的表白
type LovePraise struct {
	From  string
	To    string
	Words string
}

// WaitForLoveCallBack 等待爱的回复
func (me *Boy) WaitForLoveCallBack() LovePraise {
	// 永葆单身
	for {
		select {
		case rec := <-me.LovePraiseChan:
			if rec.Words == "同意" {
				return LovePraise{
					From:  me.Name,
					To:    rec.From,
					Words: "我群发的,有人先同意了,下次",
				}
			} else if rec.Words == "不同意" {
				return LovePraise{
					From:  me.Name,
					To:    rec.From,
					Words: "我朋友拿我手机群发的",
				}
			}
		}
	}
}

// 测试爱的表达
func TestLovePraise(t *testing.T) {
	// 开始测试
	lucy := Girl{"Lucy"}
	lily := Girl{"Lily"}
	girls := []Girl{lucy, lily}
	me := Boy{Name: "我", LovePraiseChan: make(chan LovePraise), Status: "单身"}
	for i := 0; i < len(girls); i++ {
		go func() {
			// 异步等待爱的回复——不耽误正常吃饭睡觉
			callBack := me.WaitForLoveCallBack()
			log.Printf("%+v回复%+v道:%+v", callBack.From, callBack.To, callBack.Words)
		}()
	}
	lucy.AcceptConfess(me)
	lily.RefuseConfess(me)
	// 断言
	assert.Equal(t, "单身", me.Status)
}

运行结果:

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
关于history.go(-1)发布时间:2022-07-10
下一篇:
go 语言实现简单排序发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap