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 小技巧相关推荐

  1. Golang 中使用 JSON 的一些小技巧 陶文 陶文 3 个月前 有的时候上游传过来的字段是string类型的,但是我们却想用变成数字来使用。 本来用一个json:,string 就可以支持了

    Golang 中使用 JSON 的一些小技巧 陶文 3 个月前 有的时候上游传过来的字段是string类型的,但是我们却想用变成数字来使用. 本来用一个json:",string" ...

  2. golang 向上取整小技巧

    向上取整 第一种 math.ceil 第二种 求a /b 向上取整 a := 5b := 2fmt.Println((a+b-1)/b) 3 其他小技巧

  3. go 自定义error怎么判断是否相等_Go Web 小技巧(二)GORM 使用自定义类型

    不知道大家在使用 Gorm 的时候,是否有遇到过复杂类型 ( map, struct...) 如何映射到数据库的字段上的问题? 本文分别介绍通过实现通用接口和 Hook 的方式绑定复杂的数据类型. 一 ...

  4. goland 20.1.1小技巧

    golang 20.1.1小技巧磨刀不误砍柴工 版本号: Year.Major.Minor             2020   1        1 在命令行使用goland: 使用过vscode的 ...

  5. latex 公式不居中_LaTex小技巧,祝你论文一臂之力!

    LaTex作为常用的排版系统,已深入到大家的工作和学业中.但是很多小伙伴反馈说:LaTex公式编辑复杂.表格处理麻烦等.为此,我们特别收集了一些LaTex的小技巧,希望大家都可以get到! 公式篇 首 ...

  6. 中文 查询_查询商标,商标注册通过分析的几个小技巧

    前面我们说到了商标注册前,通常情况下一定要进行商标查询,要进行注册通过可行性分析.只有这样才能保证基本的商标注册通过率,不至于无畏的浪费我们的时间和金钱. 1.我们在进行商标查询,输入要查询的商标时, ...

  7. 日常安排php,PHP日常开发小技巧

    PHP日常开发小技巧 导语:PHP语言中,如果你懂得一些开发技巧,那么对你学PHP,会有很大的帮助.下面的是百分网小编为大家整理的PHP日常开发小技巧,希望对你能有所帮助. PHP批量取得checkb ...

  8. 敲代码括号技巧_阅码神奇Souceinsight使用小技巧总结

    /****与SI的初遇****/ 对于大部分人第一次使用SI来说应该是对原IDE集成开发环境有很大的抱怨吧,确实我也一样,对于做嵌入式开发使用各种集成开发工具,比如说Keil,IAR等等,可能还有更加 ...

  9. eplan文本怎么换行_EPLAN几个使用的小技巧,非常有用

    Eplan P8 的一些小技巧 1. 页名后缀由字母变数字 ? 选项 - 设置 - 项目 - 管理 - 页 - 页名 - 子页标识 2. 修改自动连接电缆颜色 ? 选项 - 层管理 - 符号图形 3. ...

最新文章

  1. 鸿蒙升级变动,天天吹鸿蒙,视频向你展示鸿蒙升级后到底有什么变化
  2. win10 中的eclipse无法新建web项目
  3. d3 力导向图 force graph
  4. devcon的测试 尝试使用devcon命令重置Intel Realsense D435摄像头 USB
  5. oracle索引机制
  6. Java IO: InputStreamReader和OutputStreamWriter
  7. JMeter定制功能实现
  8. [css] 用CSS实现一个轮播图
  9. python协程与多线程比较_python-协程、多线程、多进程性能比较
  10. 2018 年力扣高频算法面试题汇总-难题记录-鸡蛋掉落
  11. 药品计算机培训计划,_计算机培训学习计划范文
  12. 傅里叶分析(通俗解释)
  13. 【水哥RPA】配置水哥RPA环境变量报错的解决方法
  14. 【LeetCode】799.香槟塔
  15. 网易互娱笔试题(2021春招)
  16. swift 设置贯穿导航条的页面背景图片
  17. word2013无法打开doc文件显示正在受保护视图中打开解决方法
  18. 7款经典的MySQL客户端软件
  19. python和wps-基于python的docx模块处理word和WPS的docx格式文件方式
  20. PG服务进程(Postgres)——BeginReportingGUCOptions向客户端汇报GUC

热门文章

  1. Rosalind Java|Open Reading Frames
  2. java zhs16gbk_JAVA-----乱码的处理 乱码的解决方法总结
  3. 虎牙发布直播行业首个技术开放平台 三年十亿打造开放生态
  4. 逻辑式编程语言极简实现(使用C#) - 1. 逻辑式编程语言介绍
  5. feign.codec.DecodeException 异常原因
  6. 学数学计算机课的心得,课程学习心得体会
  7. 2020汽车消费把脉:如何挠到年轻消费者的内心?
  8. c语言对称矩阵的压缩存储_C++实现对称矩阵的压缩存储 | 术与道的分享
  9. 最全FC交换机基础知识详解
  10. 网页设计与制作(HTML+CSS)(二)