内容简介:“_”是特殊标识符,用来忽略结果。1.下划线在import中在Golang里,import的作用是导入其他package。
Go语言 “ _ ”(下划线)
“_”是特殊标识符,用来忽略结果。
1.下划线在import中
在Golang里,import的作用是导入其他package。
import 下划线(如:import _ hello/imp)的作用:当导入一个包时,该包下的文件里所有init()函数都会被执行,然而,有些时候我们并不需要把整个包都导入进来,仅仅是是希望它执行init()函数而已。这个时候就可以使用 import _ 引用该包。即使用【import _ 包路径】只是引用该包,仅仅是为了调用init()函数,所以无法通过包名来调用包中的其他函数。
示例:
代码结构:
src | +--- main.go | +--- hello | +--- hello.go
main.go
package main import _ "./hello" func main() { // hello.Print() //编译报错:./main.go:6:5: undefined: hello }
hello.go
package hello import "fmt" func init() { fmt.Println("imp-init() come here.") } func Print() { fmt.Println("Hello!") }
输出结果:
imp-init() come here.
2.下划线在代码中
package main import ( "os" ) func main() { buf := make([]byte, 1024) f, _ := os.Open("/Users/***/Desktop/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数据库了。
以上所述就是小编给大家介绍的《Go语言 “ _ ”(下划线)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 文字悬停下划线动画效果集合
- golang之下划线(_)之语义说明
- Swoole 5 将移除 PSR-0 下划线风格类名
- 在Python中使用双下划线防止类属性被覆盖
- Swoole 5.0 不再使用 PSR-0 下划线风格的类名
- backbone.js – 使用主干和下划线不呈现的单独模板文件
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
叠加体验:用互联网思维设计商业模式
穆胜 / 机械工业出版社 / 2014-11 / 39.00
本书在互联网思维改变一切的背景下,详细介绍了如何运用互联网思维重构商业模式,主要包括以下内容:①互联网经济中的商业逻辑(即“互联网思维”),不仅给出了消费方面的逻辑变革,还给出了在生产端的逻辑变革以及“跨界”的逻辑变革。②给出了一个“三层产品体验模型”,厘清了互联网思维,打造完美终端、云端服务和价值群落三层体验,企业可以选择做不同层面的体验组合,这即是选择了不同的市场策略。但是,企业要基业长青,终......一起来看看 《叠加体验:用互联网思维设计商业模式》 这本书的介绍吧!