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

Go语言中普通函数与方法的区别分析

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

通过本文主要向大家介绍了go语言函数,go语言方法,go语言,go语言环境搭建,go语言程序设计等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例分析了Go语言中普通函数与方法的区别。分享给大家供大家参考。具体分析如下:

1.对于普通函数,接收者为值类型时,不能将指针类型的数据直接传递,反之亦然。

2.对于方法(如struct的方法),接收者为值类型时,可以直接用指针类型的变量调用方法,反过来同样也可以。

以下为简单示例:

 
//普通函数与方法的区别(在接收者分别为值类型和指针类型的时候) 
//Date:2014-4-3 10:00:07 
 
import ( 
    "fmt" 
) 
 
func StructTest06Base() { 
    structTest0601() 
    structTest0602() 
} 
 
//1.普通函数 
//接收值类型参数的函数 
func valueIntTest(a int) int { 
    return a + 10 
} 
 
//接收指针类型参数的函数 
func pointerIntTest(a *int) int { 
    return *a + 10 
} 
 
func structTest0601() { 
    a := 2 
    fmt.Println("valueIntTest:", valueIntTest(a)) 
    //函数的参数为值类型,则不能直接将指针作为参数传递 
    //fmt.Println("valueIntTest:", valueIntTest(&a)) 
    //compile error: cannot use &a (type *int) as type int in function argument 
 
    b := 5 
    fmt.Println("pointerIntTest:", pointerIntTest(&b)) 
    //同样,当函数的参数为指针类型时,也不能直接将值类型作为参数传递 
    //fmt.Println("pointerIntTest:", pointerIntTest(b)) 
    //compile error:cannot use b (type int) as type *int in function argument 
} 
 
//2.方法 
type PersonD struct { 
    id   int 
    name string 
} 
 
//接收者为值类型 
func (p PersonD) valueShowName() { 
    fmt.Println(p.name) 
} 
 
//接收者为指针类型 
func (p *PersonD) pointShowName() { 
    fmt.Println(p.name) 
} 
 
func structTest0602() { 
    //值类型调用方法 
    personValue := PersonD{101, "Will Smith"} 
    personValue.valueShowName() 
    personValue.pointShowName() 
 
    //指针类型调用方法 
    personPointer := &PersonD{102, "Paul Tony"} 
    personPointer.valueShowName() 
    personPointer.pointShowName() 
 
    //与普通函数不同,接收者为指针类型和值类型的方法,指针类型和值类型的变量均可相互调用 
}</div>

希望本文所述对大家的Go语言程序设计有所帮助。

</div>

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

  • Go语言函数学习教程
  • Go语言中函数的参数传递与调用的基本方法
  • Go语言的os包中常用函数初步归纳
  • Go语言常见哈希函数的使用
  • go语言简单的处理http请求的函数实例
  • Go语言里的new函数用法分析
  • go语言版的ip2long函数实例
  • Go语言截取字符串函数用法
  • Go语言中普通函数与方法的区别分析
  • Go语言中append函数用法分析

相关文章

  • Go语言转换所有字符串为大写或者小写的方法
  • go语言base64用法实例
  • Go语言实现AzDG可逆加密算法实例
  • Centos下搭建golang环境及vim高亮Go关键字设置的方法
  • Go语言常见哈希函数的使用
  • Go语言实现简单Web服务器的方法
  • Go语言中io.Reader和io.Writer的详解与实现
  • go语言通过odbc访问Sql Server数据库的方法
  • Golang最大递减数算法问题分析
  • Golang极简入门教程(三):并发支持

文章分类

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

最近更新的内容

    • GO语言make()分配用法实例
    • GO语言数组和切片实例详解
    • go语言的sql包原理与用法分析
    • go的websocket实现原理与用法详解
    • Go语言基础学习教程
    • Go语言扫描目录并获取相关信息的方法
    • go语言异常panic和恢复recover用法实例
    • Go语言执行系统命令行命令的方法
    • Golang算法问题之数组按指定规则排序的方法分析
    • GO语言实现的http抓包分析工具pproxy介绍

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

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