Bendi新闻
>
go语言-语法糖
go语言-语法糖
7天前
语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。
1、比如说参数不定的情况
Go语言函数中有三个点···
表示为可变参数,这是Go的糖衣语法,表示可以接受任意个数但相同类型的参数。
示例
func print(values ...string) { //可以接受任意个string参数
for _, v := range values {
fmt.Println("---> ", v)
}
}
func main() {
values := []string{"abc", "def", "hig", "klm",}
print(values...)
}
func myFunc1(args ...int){
for _,arg:=range args{
fmt.Println(arg)
}
}
func myFunc2(args []int){
for _,arg:=range args{
fmt.Println(arg)
}
}
myFunc1中就是使用的语法糖,按照它的内部机理来说,…type本质上是一个数组切片,也就是[]type,这也就是上面的参数args可以使用for循环来获取每一个传入的参数。
虽然myFunc2也实现了不定参数的功能,但是使用起来远不是那么简单。打个比方
对于myFunc1来说调用它如下代码:
myFunc1(2,3,4)
而对于myFunc2来说调用它却是如下代码:
myFunc2([]int{2,3,4}),
2、在赋值方面的体现
:=是Go的赋值与声明语法糖,它的功能是声明、赋值和类型推断
示例
//第一种方法
var number1 number2 number3 int
number1, number2, number3 = 1, 2, 3
//第二种方法
var number1, number2, number3 = 1, 2, 3
//第三种方法
number1, number2, number3 := 1, 2, 3
注意事项
:= 只有在左侧有未定义变量时才能使用(有定义的变量也可以)
:= 只进行语义上的检查,循环内也可以使用,第一次之后的效果和=相同
:= 和 = 都要求左右的值和变量一一对应,不会截断
特殊情况,map、chan、类型推定可以返回一个值,也可以是两个值
当map中该键不存在时,总是返回零值和false,否则后者返回true
当chan关闭以后,总是返回零值和false,否则后者返回true
链接:https://www.cnblogs.com/malukang/p/12955983.html
(版权归原作者所有,侵删)
微信扫码关注该文公众号作者
来源:马哥Linux运维
相关新闻
Go语言基础系列:深入理解和应用空接口go语言中的socket和httpgo高并发之路——go语言如何解决并发问题go高并发之路—go语言如何解决并发问题Go语言之父反思错误:“并发”理念指导不足、没做好包管理、用C写了编译器、文档缺失……异种器官移植、月球石墨烯、水凝胶骨修复材料、前额叶发育、高面容量储能、新冠N354糖基化 | NSR本周上线Go 单元测试基本介绍糖城发现西尼罗河病毒蚊子,全市喷洒灭蚊剂欧盟拟向中国赤藓糖醇加征最高294%关税,市场影响几何?华人注意!出国行李箱上千万别贴这些,也别装这种糖!后果很严重……30倍于传统方法,中国科学院团队Transformer深度学习模型预测糖-蛋白质作用位点Go的发展,似乎正在走上“邪路”?北加州|大华超市特价6月28日-7月4日.伊藤园无糖茶饮系列.无籽小西瓜~还有假日精选套餐!Haribo多伦多卡车快闪 免费领新品水果软糖!“糖、压、脂”三高共管!2024版基层防治共识发布,药物治疗建议一览不要吃这种糖!至少8人中毒住院!全澳紧急召回!科技爱好者周刊#306:信息就像糖一样上瘾救命!多伦多新开的网红餐厅我原地封神!五花肉入口尖叫!棉花糖奶冻仙气飘飘GO MARKETS冠名2024第八届“你好中文”全澳吟诵朗读大会总决赛暨颁奖盛典圆满落幕休斯顿发布危险高温警报,糖城高达110℉这是最近频繁刷的Go面试题,好用!| 极客时间go高并发之路——缓存击穿代糖陷阱:木糖醇或促进血栓形成;《科学》封面:身体瞬间变长30倍,神奇生物的秘密终于解开了|本周论文推荐扔掉小红书,国外自由行:Pokémon Go 和 Google Gemini 帮助打造最强旅游 Copilot