首页 > 其他分享 >golang之设计模式

golang之设计模式

时间:2024-02-06 17:56:01浏览次数:21  
标签:选项 设计模式 return DoSomethingOption golang func OptionFunc

[选项模式]

package main

import "fmt"

type OptionFunc func(*DoSomethingOption)

type DoSomethingOption struct {
    a int
    b string
    c bool
}

func NewDoSomethingOption(c bool, opts ...OptionFunc) *DoSomethingOption {
    s := &DoSomethingOption{c: c}
    for _, opt := range opts {
        opt(s)
    }
    return s
}

func WithA(a int) OptionFunc {
    return func(s *DoSomethingOption) {
        s.a = a
    }
}

func WithB(b string) OptionFunc {
    return func(s *DoSomethingOption) {
        s.b = b
    }
}

// 选项模式
func option() {
    s := NewDoSomethingOption(false, WithA(100), WithB("200"))
    fmt.Printf("选项模式数据:%+v \n", s)
}

 

 

更多设计模式

 

标签:选项,设计模式,return,DoSomethingOption,golang,func,OptionFunc
From: https://www.cnblogs.com/xingxia/p/18010111/golang_patterns

相关文章

  • 【设计模式】原型模式——其他框架源码中的原型模式
    原型模式在其他框架源码中也有广泛的应用。Retrofit众所周知Retrofit是OkHttp的扩展,因此Retrofit的Call接口也像OkHttp的Call类一样实现了原型模式。Call与原型模式有关的代码如下:publicinterfaceCall<T>extendsCloneable{//……代码省略……/***Createanew,i......
  • 设计模式(Design Pattern)
    目录设计模式(DesignPattern)面向对象设计原则创建型模式结构型模式行为型模式设计模式(DesignPattern)概念与定义是一套被反复使用的、多数人知晓的、经过分类编目的代码设计经验的总结。设计模式(DesignPattern)是一种对于软件系统中不断重现的设计问题的解决方案进行......
  • 解决golang依赖库被删库问题
    调用的开源库引用了github个人仓库,如果作者删除了仓库或者改成私人仓库,那么gomodtidy就会失败以github.com/mitchellh/osext为例,作者因为某些原因删除了仓库,并给出了替代的官方仓库github.com/kardianos/osext使用replace命令gomodedit-replace[oldgitpackage]@[versi......
  • Golang Grpc-Gateway生成-buf版
    官网有个工具buf可以自动生成https://github.com/bufbuild/buf/releases按照自己的平台下载对应的文件,并把可执行文件加入到环境变量下proto同级目录下新增buf.gen.yaml或者执行bufmodinit,buf默认会扫描所有文件夹的*.proto,所以我在同级目录下创建version:v1plugins:-......
  • Golang Grpc-Gateway生成-基础版
    时间久了不用就会忘记指令,这里做个笔记创建一个文件//+buildtoolspackagetoolsimport(_"github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway"_"github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2"_"google.gol......
  • 设计模式--建造者模式
    建造者模式(BuilderPattern)是一种对象构建设计模式,它提供了一种构建对象的最佳方式。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在建造者模式中,一个导演(Director)负责组织各个部分(Builder)的构建步骤,一个抽象构建器(AbstractBuilder)定义了各个部分的构建和......
  • 设计模式简介
    设计模式代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。设计模式是一套被反复使用的、多数人知晓的、经过分类编......
  • 设计模式--结构型模式
    设计模式--结构型模式目录设计模式--结构型模式代理模式静态代理jdk动态代理(接口实现原理)Cblib动态代理(继承原理)适配器模式类适配器模式对象适配器模式接口适配器模式装饰者模式使用场景:静态代理与装饰者模式的区别:桥接模式使用场景外观模式组合模式享元模式代理模式结构:......
  • c语言设计模式精要
    C语言是一种广泛使用的编程语言,它具有高效、灵活和可移植性等优点。在C语言的设计中,有一些重要的设计模式可以提高代码的可读性、可维护性和可扩展性。其中,最常见的设计模式包括单例模式、工厂模式和观察者模式等。单例模式用于确保一个类只有一个实例,并提供全局访问点;工厂模......
  • go-carbon v2.3.8 发布,轻量级、语义化、对开发者友好的 golang 时间处理库
    carbon是一个轻量级、语义化、对开发者友好的golang时间处理库,支持链式调用。目前已被awesome-go收录,如果您觉得不错,请给个star吧github.com/golang-module/carbongitee.com/golang-module/carbon安装使用Golang版本大于等于1.16//使用github库goget-ugithu......