golang 函数以及函数和方法的区别
在接触到go之前,我认为函数和方法只是同一个东西的两个名字而已(在我熟悉的c/c++,python,java中没有明显的区别),但是在golang中者完全是两个不同的东西。官方的解释是,方法是包含了接收者的函数。到底什么意思呢。
首先函数的格式是固定的,func+函数名+ 参数 + 返回值(可选) + 函数体。例
func main()
{
fmt.Println("Hello go")
}
在golang中有两个特殊的函数,main函数和init函数,main函数不用介绍在所有语言中都一样,它作为一个程序的入口,只能有一个。init函数在每个package是可选的,可有可无,甚至可以有多个(但是强烈建议一个package中一个init函数),init函数在你导入该package时程序会自动调用init函数,所以init函数不用我们手动调用,l另外它只会被调用一次,因为当一个package被多次引用时,它只会被导入一次。
package mypackage import ( "fmt" ) var I int func init() { I = 0 fmt.Println("Call mypackage init1") } func init() { I = 1 fmt.Println("Call mypackage init2") }
package main import ( "demo/mypackage" "fmt" ) func main() { fmt.Println("Hello go.... I = ", mypackage.I) }运行结果:
我们可以看到,程序为我们自动调用了两个init函数,并且是按照顺序调用的。
下面来看方法。
package main import "fmt" type myint int //乘2 func (p *myint) mydouble() int { *p = *p * 2 return 0 } //平方 func (p myint) mysquare() int { p = p * p fmt.Println("mysquare p = ", p) return 0 } func main() { var i myint = 2 i.mydouble() fmt.Println("i = ", i) i.mysquare() fmt.Println("i = ", i) }运行结果:
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。