当前位置: 首页 > article >正文

【Go - 函数 参数缺省/默认值】

Go现在与将来都不会支持参数默认值。Go始终在使得自己变得尽可能的简单,而增加这种额外的支持会使parser变得更复杂。

但是如果仍然需要,这里也有一些实现途径,

使用可变参数语法糖

package main

import "fmt"

// a is required, b is optional.
// Only the first value in b_optional will be used.
func Concat(a string, b_optional ...int) string {
	b := 0
	if len(b_optional) > 0 {
		b = b_optional[0]
	}

	return fmt.Sprintf("%s%d", a, b)
}

func main() {

	fmt.Println(Concat("Hello"))
	fmt.Println(Concat("Hello", 1))
	
}

这种算是比较常见的一种, 利用变长参数

b_optional 本质是个变长参数,对应一个切片,切片长度可能为0,也可能包含1个或者多个值。

利用结构体

package main

import (
	"fmt"
)

type Parameters struct {
	A string
	B string
}

func Concat(prm Parameters) string {
	// 变相给A 设置默认值
	if prm.A == "" {
		prm.A = "Hello"
	}

	return prm.A + ", " + prm.B
}
func main() {

	// fmt.Println(Concat("Hello"))
	p := Parameters{A: "Hello", B: "World"}
	fmt.Println(Concat(p))

	p1 := Parameters{A: "Hello"}
	fmt.Println(Concat(p1))

	p2 := Parameters{B: "World"}
	fmt.Println(Concat(p2))

	p3 := Parameters{}
	fmt.Println(Concat(p3))
}

利用结构体不强校验每个字段必须要存在,在函数开始时检查添加默认值

小结

整体上Go不太建议 默认或者缺省值,但是也有一定的方法来实现。


http://www.kler.cn/a/297214.html

相关文章:

  • Flink 配置文件的深度解读
  • C#从入门到精通(22)—Path类的使用
  • Socket编程 (连接,发送消息) (Tcp、Udp) - Part1
  • 电商平台如何合法地实现多商户分账功能
  • 微课录制技巧|高效录制微课的方法,如何高效录制微课?
  • 前端基础面试题·第三篇——JavaScript(其三)
  • sysbench下载与交叉编译
  • transforemr网络理解
  • 讲座笔记1
  • python_openCV_计算图片中的区域的黑色比例
  • 数据库课程 CMU15-445 2023 Fall Project-0 项目记录
  • Linux网络:应用层协议http/https
  • Flutter动画—涟漪效果
  • HTTP 协议的工作过程
  • 【Go - 拼接字符串】
  • CSOL如何高效防护UDP攻击
  • 手机录音怎么转换成mp3?3种方法,由我来告诉你
  • Spring基础面试题整理 理解加背诵
  • 【重学 MySQL】十七、比较运算符的使用
  • MySQL基础作业三