zoukankan      html  css  js  c++  java
  • 刷题中碰见的Golang语言问题

    一些已知的情况

    在Golang语言中,一个变量赋值/使用前,需要声明变量的类型。例如:

    var a int
    a = 10
    fmt.Printf("%d\n", a)
    

    使用另一种形式:=也可以对变量进行隐式的声明。例如:

    a := 10
    fmt.Printf("%d\", a)
    

    对于一个变量,可以赋值多次,但是只能声明一次,不能重复。例如:

    a := 10
    a := 100
    b := 10
    b := "10"
    

    这些重复声明都会报错:

    Line 5: Char 10: no new variables on left side of :=
    

    但是如果有多个变量在:=左侧的话,那么只要有一个变量还没有声明,这个语法就是正确的,下面的例子特别常见:

    a, err := foo()
    b, err := bar()
    

    还有一种情况是作用域不同也是可以重复声明的。例如:

    a := 1
    fmt.Printf("%d\n", a)
    if ... {
      a := 2
      fmt.Printf("%d\n", a)
    }
    fmt.Printf("%d\n", a)
    

    这里,应该输出:

    1
    2
    1
    

    奇怪的情况

    把上面几种情况组合一下:

    a := 1
    fmt.Printf("%d\n", a)
    if ... {
      a = 12
      fmt.Printf("%d\n", a)
      a, b := 2, 3
      fmt.Printf("%d\n", a)
      a = 13
      fmt.Printf("%d\n", a)
    }
    fmt.Printf("%d\n", a)
    

    这里输出的是:

    1
    12
    2
    13
    12
    

    这里竟然a是会被重新声明!,因此可以看出:=的意义,只要左侧变量可以被声明,那么就尽量让左侧变量声明。上面例子的写法其实非常的容易写错,解决的办法是提前声明b

  • 相关阅读:
    使用expect实现ssh免密码登陆
    vim不小心ctrl+Z解决办法
    bash 自动补全
    PHP缓存技术
    windows下安装python的easy_install工具
    python中用lxml解析html
    python中用xpath和xml.dom解析html
    申请使用sourceforge免费空间几点注意事项
    创建.htaccess文件
    静态资源放置于独立域名之下
  • 原文地址:https://www.cnblogs.com/zhuowangy2k/p/15794932.html
Copyright © 2011-2022 走看看