zoukankan      html  css  js  c++  java
  • go语言编程小tips

    go语言一个比较方便的特性是你不需要显示的定义一个变量.例如,在c语言中,你想要使用一个int型变量,那么代码如下

    int i; i =0; i++;

    而在go语言中,

    i := 0; i++

    这样你可以在"="前加上一个":",表示这个等号前面的是一个新的变量.那么这种隐式的变量声明有可能会导致严重的难以查找的bug.

    样例代码如下:

    func foo(bb int) {
      var aa int   aa = 1   if bb > 0 {
        aa, err := foo2(bb)
        if err != nil {
          //handle error
        }
      }   foo3(aa)
    }

     在这个代码片段中,foo2是一个拥有两个返回值的函数,第一个是一个int,第二个是error.我们习惯性的写下下面这句代码

    aa, err := foo2(bb)

    这会导致if语句块内的aa覆盖了外面的aa,导致foo3函数得不到真正的aa的值.

    这种错误很不起眼,但是一旦写出来,非常难以排查,因此在语句块内对于"="和":="的使用要格外小心.

  • 相关阅读:
    Linux如何自动获取IP地址
    jq操作select集合
    UDP and TCP
    IPv6
    DHCP, NAT
    队列之顺序存储实现
    ARP, Fragmentation and Reassembly
    Classless Interdomain Routing (CIDR)
    Subnet Routing Examples
    Subnetting
  • 原文地址:https://www.cnblogs.com/elnino/p/9177451.html
Copyright © 2011-2022 走看看