go语言的++/--操作

作者: CodingCode | 来源:发表于2017-09-15 13:24 被阅读9次

go语言的++/--操作

C/C++程序员的窘境

C/C++程序员在面试的时候经常会被面试官问到++/--的问题而搞晕,其实面试官自己在出题的时候也未必能弄
明白,只不过恰好在面试你之前在电脑上验证了一把,所以显得他知道的很多,不要问我怎么知道的:-)

go语言的++/--

go语言对++/--的使用做了优化(限制),个人感觉这种限制非常好;C/C++里面对++/--的使用虽然很灵活,但是这种灵活容易导致混淆,引入潜在风险。

go语言里面对++/--的限制只有一条,即:

  • ++/--是语句,不是表达式

掌握这个原则就很好理解go对++/--的使用限制了。

  1. ++/--是语句,不是表达式
  var i int
  var j int
  j = i++;

这类j=i++语句不正确,因为i++是一条语句,不是表达式,而此时需要的是表达式。

  1. 前加/后加, i++ vs. ++i
    既然++/--是语句,不是一个表达式,那么i++和++i的功能是一样的,把++放在后面只是阅读的传统习惯。

下面是官方对++/--的解释

Why are ++ and -- statements and not expressions? And why postfix, not prefix?

Without pointer arithmetic, the convenience value of pre- and postfix increment operators drops. By removing them from the expression hierarchy altogether, expression syntax is simplified and the messy issues around order of evaluation of ++ and --(consider f(i++) and p[i] = q[++i]) are eliminated as well. The simplification is significant. As for postfix vs. prefix, either would work fine but the postfix version is more traditional; insistence on prefix arose with the STL, a library for a language whose name contains, ironically, a postfix increment.

相关文章

  • Go操作MySQL

    Go语言操作MySQL MySQL是业界常用的关系型数据库,本文介绍了Go语言如何操作MySQL数据库。 Go操作...

  • Go语言并发

    Go语言并发 Go语言级别支持协程,叫做goroutine Go 语言从语言层面支持并发和并行的开发操作 Go并发...

  • 49.超赞的 Go 语言 INI 文件操作

    超赞的 Go 语言 INI 文件操作

  • go语言的++/--操作

    go语言的++/--操作 C/C++程序员的窘境 C/C++程序员在面试的时候经常会被面试官问到++/--的问题而...

  • Go语言操作Redis

    Go语言操作Redis 在项目开发中redis的使用也比较频繁,本文介绍了Go语言中go-redis库的基本使用。...

  • Go操作MySQL

    MySQL是业界常用的关系型数据库,本文介绍了Go语言如何操作MySQL数据库。 Go操作MySQL 连接 Go语...

  • Go语言——原子操作

    Go语言——原子操作 参考: 《Go并发编程实战(第2版)》 Background 原子操作即执行过程不能被中断的...

  • Go每日精选(2019-06-19)

    1.Go 上下文取消操作 2.Go语言的前景分析 3.编写地道的Go代码 4.Go coding in go wa...

  • go语言值传递与指针传递

    go语言指针 go语言作为静态编译型语言,具有指针类型,但是不提供对指针的移位危险操作,防止指针的越界等问题。 g...

  • 在Go语言中基础的Redis操作

    在Go语言中基础的Redis操作 需要先安装redigo Go语言Redis客户端的简单示例 连接池 POOL 为...

网友评论

    本文标题:go语言的++/--操作

    本文链接:https://www.haomeiwen.com/subject/igdjsxtx.html