首页 > 其他分享 >go的链式方法

go的链式方法

时间:2024-08-21 11:49:53浏览次数:8  
标签:return err Request namespace len 链式 go resourceName 方法

func (r *Request) Name(resourceName string) *Request {
if r.err != nil {
return r
}
if len(resourceName) == 0 {
r.err = fmt.Errorf("resource name may not be empty")
return r
}
if len(r.resourceName) != 0 {
r.err = fmt.Errorf("resource name already set to %q, cannot change to %q", r.resourceName, resourceName)
return r
}
if msgs := IsValidPathSegmentName(resourceName); len(msgs) != 0 {
r.err = fmt.Errorf("invalid resource name %q: %v", resourceName, msgs)
return r
}
r.resourceName = resourceName
return r
}

// Namespace applies the namespace scope to a request (<resource>/[ns/<namespace>/]<name>)
func (r *Request) Namespace(namespace string) *Request {
if r.err != nil {
return r
}
if r.namespaceSet {
r.err = fmt.Errorf("namespace already set to %q, cannot change to %q", r.namespace, namespace)
return r
}
if msgs := IsValidPathSegmentName(namespace); len(msgs) != 0 {
r.err = fmt.Errorf("invalid namespace %q: %v", namespace, msgs)
return r
}
r.namespaceSet = true
r.namespace = namespace
return r
}

// NamespaceIfScoped is a convenience function to set a namespace if scoped is true
func (r *Request) NamespaceIfScoped(namespace string, scoped bool) *Request {
if scoped {
return r.Namespace(namespace)
}
return r
}

// AbsPath overwrites an existing path with the segments provided. Trailing slashes are preserved
// when a single segment is passed.
func (r *Request) AbsPath(segments ...string) *Request {
if r.err != nil {
return r
}
r.pathPrefix = path.Join(r.c.base.Path, path.Join(segments...))
if len(segments) == 1 && (len(r.c.base.Path) > 1 || len(segments[0]) > 1) && strings.HasSuffix(segments[0], "/") {
// preserve any trailing slashes for legacy behavior
r.pathPrefix += "/"
}
return r
}

标签:return,err,Request,namespace,len,链式,go,resourceName,方法
From: https://www.cnblogs.com/cheyunhua/p/18371300

相关文章

  • go 面试资料整理
    go语言基础熟悉语法,撸个百十道基础面试题就差不多了。go语言进阶go中有哪些锁?sync.Mutex互斥锁sync.RWMutex读写锁CSP并发模型?CSP并发模型它并不关注发送消息的实体,而关注的是发送消息时使用的channel,go语言借用了proce......
  • 怎么一键清理电脑垃圾,清理垃圾的简单快捷的方法有哪些
    一键清理电脑垃圾以及清理垃圾的简单快捷方法主要包括以下几种:一、使用专业的电脑清理软件优点:这些软件通常具有强大的扫描和清理能力,能够自动识别并删除系统中的垃圾文件、临时文件、无用注册表项等,同时提供一键清理功能,操作简便快捷。操作步骤:下载并安装专业的电脑清理软件......
  • lazarus 编译时切换QT5/GTK2的方法
    lazarus编译时可以随时切换QT5/GTK2,方法如下:在project菜单-->options-->compileroptions-->additionsandoverrides点Set"LCLWidgetType"选择QT5或其他然后重新编译应用就可以。带menu、combobox等控件(在银河麒麟)的应用,用GTK2时有深灰的背景,QT5编译的整体会好点。注意:fastrepor......
  • 编写类A01,定义方法max,实现求某个double数组的最大值,并返回
    1publicclassHomework01{23//编写一个main方法4publicstaticvoidmain(String[]args){5A01a01=newA01();6double[]arr={1,1.4,-1.3,89.8,123.8,66};//;{};7Doubleres=a01.max(arr);8if......
  • 编写类A02,定义方法find,实现查找某字符串是否子啊字符数组中,并返回索引,如果找不到,返回-
    1publicclassHomework02{23//编写一个main方法4publicstaticvoidmain(String[]args){56String[]strs={"jack","tom","mary","milan"};7A02a02=newA02();8intin......
  • node版本管理工具nvm在windows系统使用方法
    nvm是什么nvm全英文也叫node.jsversionmanagement,是一个nodejs的版本管理工具。nvm和n都是node.js版本管理工具,为了解决node.js各种版本存在不兼容现象可以通过它可以安装和切换不同版本的node.js。nvm下载可在点此在github上下载最新版本,本次下载安装的是windows版本。......
  • LLM大模型测试策略与方法
    DeepEval是一个用于对语言模型(LLM)应用进行评估和单元测试的框架。它提供了各种指标,可以测试语言模型应用生成的回复在相关性、一致性、无偏见性和无毒性等方面的表现。DeepEval使得机器学习工程师可以通过持续集成/持续交付(CI/CD)流程快速评估语言模型应用的性能。此前分享过一......
  • 回归预测|基于北方苍鹰优化支持向量机的数据回归预测Matlab程序NGO-SVM 多特征输入单
    回归预测|基于北方苍鹰优化支持向量机的数据回归预测Matlab程序NGO-SVM多特征输入单输出高引用先用先创新文章目录前言回归预测|基于北方苍鹰优化支持向量机的数据回归预测Matlab程序NGO-SVM多特征输入单输出高引用先用先创新一、NGO-SVM模型1.北方苍鹰优化算......
  • 蒙特卡洛方法
    0简介蒙特·卡罗方法(MonteCarlomethod),是一种思想或者方法的统称,而不是严格意义上的算法。蒙特卡洛方法的起源是1777年由法国数学家布丰(ComtedeBuffon)提出的用投针实验方法求圆周率,在20世纪40年代中期,由于计算机的发明结合概率统计理论的指导,从而正式总结为一种数值计......
  • 计算机毕业设计-基于Python+Django的基于知识图谱的医疗问答系统项目开发实战(附源码+
    大家好!我是程序员一帆,感谢您阅读本文,欢迎一键三连哦。......