Golang 小技巧
1.前言
Golang 开发过程中的一些小技巧在这里记录下。
2.内容
1)包的引用
经常看到Golang代码中出现 _ "controller/home" 类似这种的引用,这里的下划线有什么作用呢? 其实默认每个文件都有一个init函数,加下划线表示引入这个包,仅执行init函数,
别的函数在外边是不能调用的。注意这里的几个说法:仅仅执行init函数,也就是说我们可以再init函数里面做一些操作,比如初始化一些东西。别的函数在外部是不能被调用的,
强行调用会报错。这里的示例代码结构如下:
- main.go
-- hello
----golang
------ init.go
main.go
package mainimport ("fmt""hello/golang"
)func main() {fmt.Println("this is main function")world.Test()
}
init.go
package worldimport ("fmt"
)func init() {fmt.Println("init func in golang.")
}func localfun() {fmt.Println("this is local func of init.")
}func Test() {localfun()fmt.Println("I can be called outside.")
}
运行结果如下:
C:/Go\bin\go.exe run D:/GoProject/src/main.go
init func in golang.
this is main function
this is local func of init.
I can be called outside.Process finished with exit code 0
如果我们使用 _ "hello/golang",运行则报错如下:
# command-line-arguments
.\main.go:10: undefined: world in world.Test
其实对于go来说,根本看不到这个函数,如果使用intellij,IDE 不允许用下划线的同时调用这个包里面的函数。
2)函数不定参数
通常我们认为函数的参数个数是一定的,但是在Golang里面,函数的参数可以是不定的。由于函数的返回值可以是多个,这也使得Golang非常灵活,表达能力特别强。
package mainimport ("fmt"
)func MyPrint(str ...string) {for _, s := range str {fmt.Println(s)}
}func main() {MyPrint("hello", "golang")
}
运行结果:
hello
golang
3)接口使用
type Print interface {CheckPaper(str string)
}type HPPrint struct {
}func (p HPPrint) CheckPaper(str string) {fmt.Println(str)
}func main() {p := HPPrint{}p.CheckPaper("I am checking paper.")
}
输出如下:
I am checking paper.
这样我们说HPPrint实现了Print接口。
Golang 小技巧相关推荐
- Golang 中使用 JSON 的一些小技巧 陶文 陶文 3 个月前 有的时候上游传过来的字段是string类型的,但是我们却想用变成数字来使用。 本来用一个json:,string 就可以支持了
Golang 中使用 JSON 的一些小技巧 陶文 3 个月前 有的时候上游传过来的字段是string类型的,但是我们却想用变成数字来使用. 本来用一个json:",string" ...
- golang 向上取整小技巧
向上取整 第一种 math.ceil 第二种 求a /b 向上取整 a := 5b := 2fmt.Println((a+b-1)/b) 3 其他小技巧
- go 自定义error怎么判断是否相等_Go Web 小技巧(二)GORM 使用自定义类型
不知道大家在使用 Gorm 的时候,是否有遇到过复杂类型 ( map, struct...) 如何映射到数据库的字段上的问题? 本文分别介绍通过实现通用接口和 Hook 的方式绑定复杂的数据类型. 一 ...
- goland 20.1.1小技巧
golang 20.1.1小技巧磨刀不误砍柴工 版本号: Year.Major.Minor 2020 1 1 在命令行使用goland: 使用过vscode的 ...
- latex 公式不居中_LaTex小技巧,祝你论文一臂之力!
LaTex作为常用的排版系统,已深入到大家的工作和学业中.但是很多小伙伴反馈说:LaTex公式编辑复杂.表格处理麻烦等.为此,我们特别收集了一些LaTex的小技巧,希望大家都可以get到! 公式篇 首 ...
- 中文 查询_查询商标,商标注册通过分析的几个小技巧
前面我们说到了商标注册前,通常情况下一定要进行商标查询,要进行注册通过可行性分析.只有这样才能保证基本的商标注册通过率,不至于无畏的浪费我们的时间和金钱. 1.我们在进行商标查询,输入要查询的商标时, ...
- 日常安排php,PHP日常开发小技巧
PHP日常开发小技巧 导语:PHP语言中,如果你懂得一些开发技巧,那么对你学PHP,会有很大的帮助.下面的是百分网小编为大家整理的PHP日常开发小技巧,希望对你能有所帮助. PHP批量取得checkb ...
- 敲代码括号技巧_阅码神奇Souceinsight使用小技巧总结
/****与SI的初遇****/ 对于大部分人第一次使用SI来说应该是对原IDE集成开发环境有很大的抱怨吧,确实我也一样,对于做嵌入式开发使用各种集成开发工具,比如说Keil,IAR等等,可能还有更加 ...
- eplan文本怎么换行_EPLAN几个使用的小技巧,非常有用
Eplan P8 的一些小技巧 1. 页名后缀由字母变数字 ? 选项 - 设置 - 项目 - 管理 - 页 - 页名 - 子页标识 2. 修改自动连接电缆颜色 ? 选项 - 层管理 - 符号图形 3. ...
最新文章
- 鸿蒙升级变动,天天吹鸿蒙,视频向你展示鸿蒙升级后到底有什么变化
- win10 中的eclipse无法新建web项目
- d3 力导向图 force graph
- devcon的测试 尝试使用devcon命令重置Intel Realsense D435摄像头 USB
- oracle索引机制
- Java IO: InputStreamReader和OutputStreamWriter
- JMeter定制功能实现
- [css] 用CSS实现一个轮播图
- python协程与多线程比较_python-协程、多线程、多进程性能比较
- 2018 年力扣高频算法面试题汇总-难题记录-鸡蛋掉落
- 药品计算机培训计划,_计算机培训学习计划范文
- 傅里叶分析(通俗解释)
- 【水哥RPA】配置水哥RPA环境变量报错的解决方法
- 【LeetCode】799.香槟塔
- 网易互娱笔试题(2021春招)
- swift 设置贯穿导航条的页面背景图片
- word2013无法打开doc文件显示正在受保护视图中打开解决方法
- 7款经典的MySQL客户端软件
- python和wps-基于python的docx模块处理word和WPS的docx格式文件方式
- PG服务进程(Postgres)——BeginReportingGUCOptions向客户端汇报GUC
热门文章
- Rosalind Java|Open Reading Frames
- java zhs16gbk_JAVA-----乱码的处理 乱码的解决方法总结
- 虎牙发布直播行业首个技术开放平台 三年十亿打造开放生态
- 逻辑式编程语言极简实现(使用C#) - 1. 逻辑式编程语言介绍
- feign.codec.DecodeException 异常原因
- 学数学计算机课的心得,课程学习心得体会
- 2020汽车消费把脉:如何挠到年轻消费者的内心?
- c语言对称矩阵的压缩存储_C++实现对称矩阵的压缩存储 | 术与道的分享
- 最全FC交换机基础知识详解
- 网页设计与制作(HTML+CSS)(二)