1.下划线在import中

在Golang里,import的作用是导入其他package,但是今天在看beego框架时看到了import 下划线,不知其意,故百度而解之。

import 下划线(如:import _ hello/imp)的作用:当导入一个包时,该包下的文件里所有init()函数都会被执行,然而,有些时候我们并不需要把整个包都导入进来,仅仅是是希望它执行init()函数而已。这个时候就可以使用 import _ 引用该包。即使用【import _ 包路径】只是引用该包,仅仅是为了调用init()函数,所以无法通过包名来调用包中的其他函数。 
示例: 
代码结构 
 
main.go

package mainimport _ "hello/imp"func main() {// imp.Print() // 如果不注释掉 编译报错,undefined: imp
}

init.go

package impimport "fmt"func init() {fmt.Println("imp-init() come here.")
}func Print() {fmt.Println("Hello!")
}

输出结果:

imp-init() come here.

说明 imp包中的 init函数已经被执行了

2.下划线在代码中

package mainimport ("os"
)func main() {buf := make([]byte, 1024)f, _ := os.Open("/Users/samchen/Music/text.txt")defer f.Close()for {n, _ := f.Read(buf)if n == 0 {break}os.Stdout.Write(buf[:n])
}

解释1:

下划线意思是忽略这个变量.

比如os.Open,返回值为*os.File,error

普通写法是f,err := os.Open(xxxxxxx)

如果此时不需要知道返回的错误值

就可以用f, _ := os.Open(xxxxxx)

如此则忽略了error变量

解释2:

占位符,意思是那个位置本应赋给某个值,但是咱们不需要这个值,所以就把该值赋给下划线,意思是丢掉不要,这样编译器可以更好的优化,任何类型的单个值都可以丢给下划线。 
这种情况是占位用的,方法返回两个结果,而你只想要一个结果,那另一个就用 _ 占位,而如果用变量的话,不使用,编译器是会报错的。

补充:

import "database/sql"
import _ "github.com/go-sql-driver/mysql"

第二个import就是不直接使用MySQL包,只是执行一下这个包的init函数,把mysql的驱动注册到sql包里,然后程序里就可以使用sql包来访问mysql数据库了。

golang 下划线相关推荐

  1. golang import后带“_”下划线的意义

    2019独角兽企业重金招聘Python工程师标准>>> 在Golang里,import的作用是导入其他package,但是今天在看beego框架时看到了import 下划线,不知其意 ...

  2. Golang中import 导入包的几种方式:点,别名与下划线

    在写Go代码的时候经常用到import这个命令用来导入包文件,看到的方式参考如下: import (// 多个"google.golang.org/grpc""imcs/ ...

  3. Golang import 三种特殊形式:下划线、点、别名-from-csdner-9命怪猫

    如同其它语言,Golang里面的import作用是引用其它package. 除了直接import,常见的import有三种特殊形式(或者叫前缀),分别是前面加下划线(_),加点(.),加别名. 一.加 ...

  4. golang中的下划线(_)用法

    golang的下划线有一些不错的用法. golang中的下划线表示忽略变量的意思,也没有产生新的变量,但是后面的表达式依然会被执行. 1.忽略返回值 这个应该是最简单的用途,比如某个函数返回三个参数, ...

  5. golang import 导入包语法介绍 点 别名 下划线

    package 的导入语法 写 Go 代码的时经常用到 import 这个命令用来导入包,参考如下: import("fmt" ) 然后在代码里面可以通过如下的方式调用: fmt. ...

  6. Golang的下划线标识符

    1.忽略不想使用的包,如import _ "fmt" ,给导入的包赋予一个空名字,表示只调用对应包内的所有代码文件里定义的init 函数,因为Go编译器不允许声明导入某个包却不使用 ...

  7. go-import下划线的作用

    在Golang里,import的作用是导入其他package,但是今天在看beego框架时看到了import 下划线,不知其意,故百度而解之. import 下划线(如:import _ hello/ ...

  8. c语言里的下划线的作用,关于下划线,你应该了解的几个特殊用途

    下划线和中划线,虽然模样长的都差不多,但程序员对她们的喜爱程度却是相差十万八千里.下划线在程序员眼里,是一个魔法师,而中划线只是一个普通字符而已. 一.MySQL数据库 在SQL语句中,like关键字 ...

  9. python 下划线转驼峰,Go语言json编码驼峰转下划线、下划线转驼峰的实现

    一.需求 golang默认的结构体json转码出来,都是根据字段名生成的大写驼峰格式,但是一般我们最常用的json格式是小写驼峰或者小写下划线,因此,我们非常需要一个统一的方法去转换,而不想挨个写js ...

最新文章

  1. 超越英伟达的,不会是另一款GPU?这家深圳公司发布全球首款数据流AI芯片
  2. Socket通信原理
  3. Android 监听ScrollView的滑动
  4. response.setHeader()的用法
  5. 超大规模预训练模型专场直播:模型真的越大越好吗?
  6. 2字节取值范围_5G NR 下行同步SSB(2)—PSS和SSS的用途
  7. CVPR 2020丨MAML-Tracker: 用目标检测思路做目标跟踪? 小样本即可得高准确率
  8. python反编译加密文件_python打包的二进制文件反编译
  9. 软件开发价格估算方法
  10. 配置authorized_keys让服务器A免密登录服务器B
  11. 【转】ST、SC、FC、LC光纤接头区别
  12. 基于Seq2Seq的问答摘要与推理问题方案
  13. C语言——对文件的输入输出
  14. 音箱选购必备20秘诀
  15. Linux安全之关闭不需要的端口
  16. 【强化学习】确定性策略强化学习-DPGDDPG算法推导及分析
  17. ubuntu20.04里怎么创建.txt文件
  18. mysql 清除分区数据恢复_MySQL 误操作后数据恢复(update,delete忘加where条件)【转】...
  19. 老猿学5G扫盲贴:中国移动网络侧CHF的功能分解说明
  20. 编写程序,计算两个二维平面向量的和向量。

热门文章

  1. Linux内核Makefile
  2. 美学心得(第一百九十四集)罗国正
  3. 洛谷 P1825 [USACO11OPEN]玉米田迷宫Corn Maze
  4. Linux的文件权限(简单易懂)
  5. UINavigationItem的titleView的frame问题
  6. Blend Tree Type
  7. UVA 10714 Ants
  8. php curl 内容采集
  9. SQLite三种JDBC驱动的区别
  10. cronolog apache 日志分割