go-选项卡模式
package main import "fmt" const ( defaultName string = "张建平" defaultAge int = 27 defaultHigh int = 175 ) type User struct { Name string Age int High int } type UserOptions struct { Name string Age int High int } type UserOption interface { apply(*UserOptions) } type FuncUserOption struct { f func(*UserOptions) } func (fo FuncUserOption) apply(option *UserOptions) { fo.f(option) } func WithName(name string) UserOption { return FuncUserOption{ f: func(options *UserOptions) { options.Name = name }, } } func WithAge(age int) UserOption { return FuncUserOption{ f: func(options *UserOptions) { options.Age = age }, } } func WithHigh(high int) UserOption { return FuncUserOption{f: func(options *UserOptions) { options.High = high }} } func NewUser(opts ...UserOption) *User { options := UserOptions{ Name: defaultName, Age: defaultAge, High: defaultHigh, } for _, opt := range opts { opt.apply(&options) } return &User{ Name: options.Name, Age: options.Age, High: options.High, } } func main() { u1 := NewUser() fmt.Println(u1) u2 := NewUser(WithName("胖虎")) fmt.Println(u2) u3 := NewUser(WithName("喵"), WithAge(3)) fmt.Println(u3) }
package main import ( "fmt" "sync" ) var wg sync.WaitGroup const repeatCount = 100 func main() { // cat dog fish catCh := make(chan struct{}, 1) dogCh := make(chan struct{}, 1) fishCh := make(chan struct{}, 1) wg.Add(3) catCh <- struct{}{} go printAnimal(catCh, dogCh, "cat", &wg) go printAnimal(dogCh, fishCh, "dog", &wg) go printAnimal(fishCh, catCh, "fish", &wg) wg.Wait() } func printAnimal(in, out chan struct{}, name string, wg *sync.WaitGroup) { count := 0 for { <-in count++ fmt.Println(name) out <- struct{}{} if count >= repeatCount { wg.Done() return } } }
本文来自博客园,作者:一石数字欠我15w!!!,转载请注明原文链接:https://www.cnblogs.com/52-qq/p/17515434.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
2022-06-29 Python源码导出到一个txt文件
2021-06-29 项目部署
2018-06-29 一套小学生的试卷。。。
2018-06-29 python基础小练习
2018-06-29 Django-配置celery