首页 > 其他分享 >Go:build模式和options模式

Go:build模式和options模式

时间:2023-05-29 10:23:02浏览次数:35  
标签:protocol string 模式 Server build func Go server option

build模式和options模式

package main

import "fmt"

// Server 初始化可选参数的
type Server struct {
  url      string
  port     string
  protocol string
  option   string
}
//定义函数类型
type ModOption func(option *Server)
//将函数类型传入,然后再内部调用
func New(url string, port string, modOptions ...ModOption) *Server {
  server := Server{
    url:      url,
    port:     port,
    protocol: "TCP",
    option:   "默认参数",
  }

  for _, option := range modOptions {
    option(&server)
  }

  return &server
}

func WithProtocol(protocol string) ModOption {
  return func(server *Server) {
    server.protocol = protocol
  }
}

func WithOption(option string) ModOption {
  return func(server *Server) {
    server.option = option
  }
}



//build模式,链式调用初始化
func Build(url string, port string) *Server {
  server := Server{
    url:      url,
    port:     port,
    protocol: "TCP",
    option:   "默认参数",
  }
  return &server
}

func (s *Server) buildProtocol(p string) *Server {
  s.protocol = p
  return s
}

func (s *Server) buildOption(p string) *Server {
  s.option = p
  return s
}

func main() {

  var server1 = New("8.125.3.243", "2203", WithOption("可选参数2"))
  fmt.Println(server1)

  var server2 = Build("8.125.3.243", "2203").buildProtocol("111").buildOption("可选111")
  fmt.Println(server2)
}

标签:protocol,string,模式,Server,build,func,Go,server,option
From: https://www.cnblogs.com/yinbit/p/17439675.html

相关文章

  • centos下安装go环境两种方法
    centos下安装go环境有两种方式,一个是yum,一个是直接到官网下载tar.包1.yum方式安装yum-yinstallgolang1然后就可以使用go语言了,这种方式有着明显的缺点,因为都是yum自己处理的依赖,不方便管理。下载tar包手动安装标准官网:https://golang.org/需要墙镜像官网:https://golang.goo......
  • Django用户认证组件 (auth模块)
    1、导入auth模块#认证模块fromdjango.contribimportauth#对应数据库用户表,可以继承扩展fromdjango.contrib.auth.modelsimportUser2、创建用户对象create():创建一个普通用户,密码是明文的。create_user():创建一个普通用户,密码是密文的。create_superu......
  • Golang入门笔记
    第一个Go程序packagemain //包,表明代码所在的模块(包)import"fmt" //引入代码依赖//功能实现funcmain(){ fmt.Println("HelloWorld");}编译执行➜go-examplegit:(master)✗cdsrc/example/main➜maingit:(master)✗lshello_world.go➜maingit:......
  • Spider理论系列--MongoDB(二)
    NoSQLMongodb下载mongodb的版本,两点注意根据业界规则,偶数为稳定版,如1.6.X,奇数为开发版,如1.7.X32bit的mongodb最大只能存放2G的数据,64bit就没有限制性能BSON格式的编码和解码都是非常快速的。它使用了C风格的数据表现形式,这样在各种语言中都可以高效地使用。NoSQL(NoSQL=NotOnly......
  • 首个大规模使用工具的大模型来了:伯克利发布Gorilla
    前言 OneAItorulethemall.本文转载自机器之心欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。CV各大方向专栏与各个部署框架最全教程整理【CV技术指南】CV全栈指导班、基础入门班、论文指导班全面上线!!大型语言模型......
  • wireshark 结合 go 对每个请求进行 https tls tcp 内容解密
    众所周知,wireshark是一款流行的抓包软件,我们可以很方便地查看每个TCP包的具体信息。对于HTTP协议的数据,还可以查看每个协议层具体信息内容。但是对于HTTPS的数据,我们只能查看IP层以下的数据,TLS及以上的数据都是被加密过的,如下图所示。 在某些特殊的场景下,我们想查......
  • SNP一文解答SAP云迁移的四种部署模式
    为了方便不同需求的用户,多云计算提供商提供了多种形式的云服务,常见的有公有云、私有云、混合云和社区云等。私有云(PrivateClouds)是为一个客户单独使用而构建的,因而提供对数据、安全性和服务质量的最有效控制。该公司拥有基础设施,并可以控制在此基础设施上部署应用程序的方式。私......
  • 发布-配置build命令
    配置webpack的打包发布在package.json文件的scripts节点下,新增build命令如下:"scripts":{"dev":"webpackserve",//开发环境中,运行dev命令"build":"webpack--modeproduction"//}--mode是一个参数项,用来指定webpack的运行模式。production代表生产环境......
  • django多表关联实战
    定义模型类:fromdjango.dbimportmodelsfromdjango.contrib.auth.modelsimportUser'''----------Django-ORM多表关联----------''''''需要创建的表:1.书籍表2.出版社表3.作者表4.作者详情表'''�......
  • WEB漏洞—SQL注入之Oracle,MongoDB等注入
     1.明确注入数据库类型、权限2.明确提交方法、参数类型等高权限可以执行文件读取,低权限就老老实实获取数据,最终目的都是获取网站权限 常见数据库类型mysql,access,mssql,mongoDB,postgresql,sqlite,oracle,sybase等1、Access注入Access与mysql结构,除access之外,其他数据库结......