package main

/*
方法method Go 中虽没有class,但依旧有method
通过显示说明receiver来实现与某个类型的组合
只能为同一个包中的类型定义方法
Receiver 可以是类型的值或者指针
不存在方法重载
可以使用值或指针来调用方法,编译器会自动完成转换
从某种意义上来说,方法是函数的语法糖,因为receiver其实就是
方法所接收的第1个参数(Method Value vs. Method Expression)
如果外部结构和嵌入结构存在同名方法,则优先调用外部结构的方法
类型别名不会拥有底层类型所附带的方法
方法可以调用结构中的非公开字段 */ //go语言没有方法的重载概念,
import (
"fmt"
) type A struct {
name string
} type B struct {
name string //小写是私有字段,方法Print1也可以访问,小写对于整个package是公有的,包外面不能访问,
} func main() {
a := A{}
a.Print() //"A"
a.Print1() //"A1"
fmt.Println(a.name) //a1,也可以访问结构体的私有字段, b := B{}
b.Print() //"B"
b.Print1() //"B1"
fmt.Println(b.name) //"" var c TZ
c.print() //"TZ",这样就可以为基本类型int绑定方法了,这就是为什么type不仅仅是别名,
//因此TZ类型转换成int类型要强制转换,因为无法为int类型绑定方法(即使在int包中绑定了方法,
//其余包也是在不到这个方法的),但是通过type定义别名后就可以为基本类型绑定方法了,
fmt.Println(c) //
(*TZ).print(&c) //"TZ",也调用了print方法,两者都可以,
} func (a A) Print(c int) { //a A就是reciver接收者,Print方法就是结构体A的方法,
fmt.Println("A")
}
func (a *A) Print1() { //把a结构体的指针闯进来,可以修改a里面的值,
//传递的是地址(结构体传递参数是值传递不是引用传递,但是这里强制传递的是地址)
a.name = "a1"
fmt.Println("A1")
} func (b B) Print(c int) { //b B就是reciver接收者,Print方法就是结构体B的方法,
fmt.Println("B")
} func (b B) Print1() { //没有传递指针,不能修改b结构体里面的值,
b.name = "b1"
fmt.Println("B1")
} //可以为内置的基本类型绑定方法
type TZ int //别名 func (a *TZ) print() {
*a =
fmt.Println("TZ")
}
package main

/*
*/ import (
"fmt"
) type TZ int func (tz *TZ) add(num int) {
*tz += TZ(num) //int类型要强制转换成TZ类型
} func main() {
var a TZ
a.add()
fmt.Println(a) //
}

go11---方法method的更多相关文章

  1. Java反射-方法(Method)

    工作了三年,第二次使用反射! 遇到的问题描述: 多个页面查询后,返回的List中的对象属性为“.00”,页面显示不友好. 查询原因是因为查询数据的SQL为:to_char(a.applyAmount, ...

  2. 2.C#中泛型在方法Method上的实现

    阅读目录   一:C#中泛型在方法Method上的实现 把Persion类型序列化为XML格式的字符串,把Book类型序列化为XML格式的字符串,但是只写一份代码,而不是public static s ...

  3. 廖雪峰Java4反射与泛型-1反射-2访问字段Field和3调用方法Method

    2.字段Field 2.1.通过Class实例获取字段field信息: getField(name): 获取某个public的field,包括父类 getDeclaredField(name): 获取 ...

  4. go语言中的方法method

    package main; import "fmt" //重新定义一个类型 //为该INT类型扩展方法 type INT int; type A struct { name str ...

  5. Golang 方法method

    方法method Go中虽没有class,但依旧有method 通过显示说明receiver来实现与某个类型的结合 只能为同一个包中的类型定义方法 receiver可以是类型的值或者指针 不存在方法重 ...

  6. 提高java反射速度的方法method.setAccessible(true)

    转载:http://huoyanyanyi10.iteye.com/blog/1317614 提高java反射速度的方法method.setAccessible(true) package com.c ...

  7. 通过反射获取及调用方法(Method)

    1.获取方法使用反射获取某一个类中的方法,步骤:①找到获取方法所在类的字节码对象②找到需要被获取的方法 Class类中常用方法: public Method[] getMethods():获取包括自身 ...

  8. java Class中得到构造方法Constructor、方法Method、字段Field

    常用方法: Constructor类用于描述类中的构造方法: Constructor<T> getConstructor(Class<?>... parameterTypes) ...

  9. Day15_86_通过反射机制获取所有方法(method)

    通过反射机制获取所有方法(method) import java.lang.reflect.Field; import java.lang.reflect.Method; import java.la ...

  10. 反射【类Class、成员变量Field、方法Method】

    Class<?> c = Class.forName("main.Main$MyClass"); //要包名+类名 Object obj = c.newInstance ...

随机推荐

  1. Autorelease pools 官方文档

    翻译自: http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmAu ...

  2. show()的几种方法

    1 show()方法和hide()方法 $("selector").show()  从display:none还原元素默认或已设置的display属性$("selecto ...

  3. 使用Java(Jedis)链接redis报java.net.ConnectException: Connection refused: connect的错误

    redis环境:centos6 java代码运行环境:windows 第一种情况:未开启redis服务. redis-server /myredis/redis.conf (写你的redis配置文件的 ...

  4. [Python3网络爬虫开发实战] 6.3-Ajax结果提取

    这里仍然以微博为例,接下来用Python来模拟这些Ajax请求,把我发过的微博爬取下来. 1. 分析请求 打开Ajax的XHR过滤器,然后一直滑动页面以加载新的微博内容.可以看到,会不断有Ajax请求 ...

  5. 如何优雅的使用vue+Dcloud(Hbuild)开发混合app

    如何优雅的使用vue+Dcloud(Hbuild)开发混合app 最近在做混合app,前端框架用的是vue,打包app使用的是Dcloud,不过在开发过程中有一点不爽的是,如果想使用Dcloud提供的 ...

  6. c++基础_特殊回文数

    #include <iostream> using namespace std; int main(){ int n; cin>>n; ;i<;i++){ int tem ...

  7. Python之微信-微信机器人

    一 简介 二 登录微信 三 微信好友男女比例 四 微信好友地域分布 五 微信聊天机器人 一 简介 wxpy基于itchat,使用了 Web 微信的通讯协议,,通过大量接口优化提升了模块的易用性,并进行 ...

  8. TensorFlow - 相关 API

    来自:https://cloud.tencent.com/developer/labs/lab/10324 TensorFlow - 相关 API TensorFlow 相关函数理解 任务时间:时间未 ...

  9. ROS 笔记 程序包/节点/topic

    官方教程: wiki.ros.org/cn/ROS/tutorials 程序包打创建于编译 创建程序包 在工作空间的src底下,输入如下命令: $ catkin_create_pkg 要创建的包名 依 ...

  10. SIGPIPE 13 和其他信号的对照表

    SIGPIPE 13 和其他信号的对照表 SIGHUP 1 在控制终端上检测到挂断或控制线程死亡 是SIGINT 2 交互注意信号 是SIGQUIT 3 交互中止信号 是SIGILL 4 检测到非法硬 ...