• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >Golang > golang 函数以及函数和方法的详解及区别

golang 函数以及函数和方法的详解及区别

作者:lqh 字体:[增加 减小] 来源:互联网

lqh 通过本文主要向大家介绍了golang 函数,golang 函数指针,golang 匿名函数,golang 方法,golang init方法等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

golang 函数以及函数和方法的区别

在接触到go之前,我认为函数和方法只是同一个东西的两个名字而已(在我熟悉的c/c++,python,java中没有明显的区别),但是在golang中者完全是两个不同的东西。官方的解释是,方法是包含了接收者的函数。到底什么意思呢。

首先函数的格式是固定的,func+函数名+ 参数 + 返回值(可选) + 函数体。例

func main() 

{

fmt.Println("Hello go")

}

</div>

在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")
}

</div>
package main

import (
 "demo/mypackage"
 "fmt"
)

func main() {
 fmt.Println("Hello go.... I = ", mypackage.I)
}

</div>

运行结果:

我们可以看到,程序为我们自动调用了两个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)
}

</div>

运行结果:

我们可以看到方法和函数的区别,方法在func关键字后是接收者而不是函数名,接收者可以是自己定义的一个类型,这个类型可以是struct,interface,甚至我们可以重定义基本数据类型。我们可以给他一些我们想要的方法来满足我们的实际工程中的需求,就像上面一样我重定义了int并给了它一个乘2和平法的方法,这里我们要注意一个细节,接收者是指针和非指针的区别,我们可以看到当接收者为指针式,我们可以通过方法改变该接收者的属性,但是非指针类型缺做不到。

这里的接收者和c++中的this指针有一些相似,我们可以把接受者当作一个class,而这些方法就是类的成员函数,当接收者为指针类型是就是c++中的非const成员函数,为非指针时就是const成员函数,不能通过此方法改变累的成员变量。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

</div>

您可能想查找下面的文章:

  • golang 函数以及函数和方法的详解及区别
  • golang struct扩展函数参数命名警告解决方法
  • 深入解析golang编程中函数的用法
  • Golang记录、计算函数执行耗时、运行时间的一个简单方法

相关文章

  • Go语言生成随机数的方法
  • Golang 内存模型详解(一)
  • Go语言实现的一个简单Web服务器
  • go语言对文件按照指定块大小进行分割的方法
  • go语言文件正则表达式搜索功能示例
  • Go语言map用法实例分析
  • 在Go程序中实现服务器重启的方法
  • Go语言字典(map)用法实例分析【创建,填充,遍历,查找,修改,删除】
  • sublime安装支持go和html的插件
  • Go语言编程中判断文件是否存在是创建目录的方法

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • golang使用sort接口实现排序示例
    • go语言中使用timer的常用方式
    • Go语言Echo服务器的方法
    • Go语言并发模型的2种编程方案
    • go语言实现一个最简单的http文件服务器实例
    • Go语言中嵌入C语言的方法
    • Go语言模拟while语句实现无限循环的方法
    • Go语言入门教程之基础语法快速入门
    • go语言中时间戳格式化的方法
    • Go语言中的Array、Slice、Map和Set使用详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有