golang 下划线
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 下划线相关推荐
- golang import后带“_”下划线的意义
2019独角兽企业重金招聘Python工程师标准>>> 在Golang里,import的作用是导入其他package,但是今天在看beego框架时看到了import 下划线,不知其意 ...
- Golang中import 导入包的几种方式:点,别名与下划线
在写Go代码的时候经常用到import这个命令用来导入包文件,看到的方式参考如下: import (// 多个"google.golang.org/grpc""imcs/ ...
- Golang import 三种特殊形式:下划线、点、别名-from-csdner-9命怪猫
如同其它语言,Golang里面的import作用是引用其它package. 除了直接import,常见的import有三种特殊形式(或者叫前缀),分别是前面加下划线(_),加点(.),加别名. 一.加 ...
- golang中的下划线(_)用法
golang的下划线有一些不错的用法. golang中的下划线表示忽略变量的意思,也没有产生新的变量,但是后面的表达式依然会被执行. 1.忽略返回值 这个应该是最简单的用途,比如某个函数返回三个参数, ...
- golang import 导入包语法介绍 点 别名 下划线
package 的导入语法 写 Go 代码的时经常用到 import 这个命令用来导入包,参考如下: import("fmt" ) 然后在代码里面可以通过如下的方式调用: fmt. ...
- Golang的下划线标识符
1.忽略不想使用的包,如import _ "fmt" ,给导入的包赋予一个空名字,表示只调用对应包内的所有代码文件里定义的init 函数,因为Go编译器不允许声明导入某个包却不使用 ...
- go-import下划线的作用
在Golang里,import的作用是导入其他package,但是今天在看beego框架时看到了import 下划线,不知其意,故百度而解之. import 下划线(如:import _ hello/ ...
- c语言里的下划线的作用,关于下划线,你应该了解的几个特殊用途
下划线和中划线,虽然模样长的都差不多,但程序员对她们的喜爱程度却是相差十万八千里.下划线在程序员眼里,是一个魔法师,而中划线只是一个普通字符而已. 一.MySQL数据库 在SQL语句中,like关键字 ...
- python 下划线转驼峰,Go语言json编码驼峰转下划线、下划线转驼峰的实现
一.需求 golang默认的结构体json转码出来,都是根据字段名生成的大写驼峰格式,但是一般我们最常用的json格式是小写驼峰或者小写下划线,因此,我们非常需要一个统一的方法去转换,而不想挨个写js ...
最新文章
- 超越英伟达的,不会是另一款GPU?这家深圳公司发布全球首款数据流AI芯片
- Socket通信原理
- Android 监听ScrollView的滑动
- response.setHeader()的用法
- 超大规模预训练模型专场直播:模型真的越大越好吗?
- 2字节取值范围_5G NR 下行同步SSB(2)—PSS和SSS的用途
- CVPR 2020丨MAML-Tracker: 用目标检测思路做目标跟踪? 小样本即可得高准确率
- python反编译加密文件_python打包的二进制文件反编译
- 软件开发价格估算方法
- 配置authorized_keys让服务器A免密登录服务器B
- 【转】ST、SC、FC、LC光纤接头区别
- 基于Seq2Seq的问答摘要与推理问题方案
- C语言——对文件的输入输出
- 音箱选购必备20秘诀
- Linux安全之关闭不需要的端口
- 【强化学习】确定性策略强化学习-DPGDDPG算法推导及分析
- ubuntu20.04里怎么创建.txt文件
- mysql 清除分区数据恢复_MySQL 误操作后数据恢复(update,delete忘加where条件)【转】...
- 老猿学5G扫盲贴:中国移动网络侧CHF的功能分解说明
- 编写程序,计算两个二维平面向量的和向量。