学习Golang的一些笔记
package
这点其实和Java有点区别的,Java支持在任何包名下psvm的。
但是Go不同,go的主函数的包名必须是main
变量声明
四种方式,三种支持全局变量的声明,一种不支持
支持全局变量的声明方式
- var a int //默认值为0
- var a int = 10
- var a = 10
这三种方式都支持全局变量的定义,感觉还是比较类似python的
不支持全局变量的声明方式
a := 100
这种方式就更加类似于python了,在赋初值的时候会自动判断类型
这种方法只支持在函数体内声明变量
和Java的区别
同时Go是一个很简洁的语言,如果一个变量声明了但是没有使用,这是会报错的。
提到报错这一点,其实go和java又是一个极端,go是不支持exception的,只有error
const常量
常量的特点是具有只读属性,不允许修改,和Java中的final以及cpp的const一致
所以可以用来定义枚举类型,配合iota来实现,第一行的iota的默认值为0
定义类似如下:
1 | const( |
多返回值
go感觉在这一点上和python很像,支持多返回值
返回值定义
首先go的返回值包括形参的定义如下:
1 | func func1(a string, b bool) int{ |
但是如果我要定义多个返回值,那么可以用类似于python元组的形式定义返回值
1 | func func2(a int, b int)(int ,string){ |
导包
导包一般会执行到init()函数才会继续执行,一般来说,init函数会早于main函数执行
同时,go有个比较有意思的点,就是对外放开的方法首字母要大写。