加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Go语言的奇特语法,你怎么看?

发布时间:2019-04-25 05:13:56 所属栏目:建站 来源:itworld123
导读:刚开始打仗Go说话的同窗认为Go说话的语法很出格,尤其是行使C/C++可能Java等说话的同窗。好比在C等说话中界说变量的时辰范例是在名称前面,而Go说话偏偏要将范例放在变量名称后头,认为很稀疏等等。下面是原文,对这些稀疏的语法给出了相对官方和靠谱的解

假云云时把参数名去掉,它照旧很清晰——由于参数名总在范例的前面,以是不会引起夹杂。

  1. func main(int, *[]byte) int 

这种自左向右气魄威风凛凛的声明的一个代价在于,当范例变得更伟大时,它依然相对简朴。下面是一个函数变量的声明(相等于 C 说话里的函数指针)

  1. f func(func(int,int) int, int) int 

可能当它返回一个函数时:

  1. f func(func(int,int) int, int) func(int, int) int 

上面的声明读起来照旧很清楚,自左向右,并且毕竟哪一个变量名是当前被声明的也轻易看懂——由于变量名永久在首位。

范例语法和表达式语法带来的不同使得在 Go 说话里挪用闭包也变得更简朴:

  1. sum := func(a, b int) int { return a+b } (3, 4) 
指针

指针有些破例。留意在数组 (array )和切片 (slice) 中,Go 的范例语法把方括号放在了范例的左边,可是在表达式语法中却又把方括号放到了右边:

  1. var a []int 
  2. x = a[1] 

相同的,Go 的指针相沿了 C 的 * 记法,可是我们写的时辰也是声明时 * 在变量名右边,但在表达式中却又得把 * 放到左左边:

  1. var p *int 
  2. x = *p 

不能写成下面这样

  1. var p *int 
  2. x = p* 

由于后缀的 * 也许会和乘法运算夹杂,大概我们可以改用 Pascal 的 ^ 标志,像这样

  1. var p ^int 
  2. x = p^ 

我们大概还真的应该把 * 像上面这样改成 ^ (虽然这么一改 xor 运算的标记也得改),由于在范例和表达式中的 * 前缀确实把好些事儿都搞得有点伟大,举个例子来说,固然我们可以像下面这样写

  1. []int("hi") 

但在转换时,假如范例是以 * 开头的,就得加上括号:

  1. (*int)(nil) 

假若有一天我们乐意放弃用 * 作为指针语法的话,那么上面的括号就可以省略了。

可见,Go 的指针语法是和 C 相似的。但这种相似也意味着我们无法彻底停止在文法中偶然为了停止范例和表达式的歧义必要增补括号的环境。

总而言之,尽量存在不敷,但我们信托 Go 的范例语法要比 C 的轻易懂。出格是当范例较量伟大时。

【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读