• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    golang的空标识符理解

    空白符(blank identifier)

    空白符的产生可能是因为go不允许变量声明了但不使用。既然不想使用,何必声明变量呢,那就将变量用空白符代替,反正空白符就是用来抛弃的。

    我们有时候看到这样的golang代码:

    import _ "net/http/pprof"

    for _, c := range "11234" {
      log.Println(c)
    }

    var _ io.Reader = (* XXX)(nil)  //全局变量

    var _ = Suite(HelloWorldTest{})

    代码中_很独特的样子:说是变量吧,但它在同一作用域可以多次被定义;说是类型吧,写法上又不像。

    那它到底是何方神圣呢?

    其实官方文档有定义和介绍,它叫Black Identifier,中文翻译为空标识符。空标识符不是普通变量,而是语言提供的一种特殊处理,它能避免某个变量起名,同时也可以在赋值时舍弃某个值。

    空标识符一般用于4种场合,正对应上面例子的4段代码。

    1. 引入某包只执行包中的init函数,但本包没有直接引用该包任何变量或函数,使用import _避免编译错误;

    2. 函数有多返回值,忽略其中某些返回值。类似c++11 std::ignore在std::tie中的运用;

    3. 编译期检查,比如某类型有没有实现某接口的检查;

    4. 想在main之前执行某段代码,当然用init也可以。

    示例 blank_identifier.go

    package main
    import "fmt"
    func main() {
      var i1 int
      var f1 float32
      i1, _, f1 = ThreeValues()
      fmt.Printf("The int: %d, the float: %f \n", i1, f1)
    }
    func ThreeValues() (int, int, float32) {
      return 5, 6, 7.5
    }

    输出结果:

    The int: 5, the float: 7.500000

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

    您可能感兴趣的文章:
    • go for range坑和闭包坑的分析
    • strings命令分析浅谈Go和C++编译时的一点小区别
    • go panic时如何让函数返回数据?
    • go代码实现买房贷款月供计算的方法
    • linux下搭建go环境的安装配置讲解
    • 为什么Go语言把类型声明放在后面?
    • 用go gin server来做文件上传服务
    • 使用go gin来操作cookie的讲解
    • 在go中使用omitempty的代码实例
    • go for range遍历二维数组的示例
    上一篇:为什么Go语言把类型声明放在后面?
    下一篇:go格式“占位符”输入输出 类似python的input
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    golang的空标识符理解 golang,的,空,标识符,理解,