go11---方法method
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的更多相关文章
- Java反射-方法(Method)
工作了三年,第二次使用反射! 遇到的问题描述: 多个页面查询后,返回的List中的对象属性为“.00”,页面显示不友好. 查询原因是因为查询数据的SQL为:to_char(a.applyAmount, ...
- 2.C#中泛型在方法Method上的实现
阅读目录 一:C#中泛型在方法Method上的实现 把Persion类型序列化为XML格式的字符串,把Book类型序列化为XML格式的字符串,但是只写一份代码,而不是public static s ...
- 廖雪峰Java4反射与泛型-1反射-2访问字段Field和3调用方法Method
2.字段Field 2.1.通过Class实例获取字段field信息: getField(name): 获取某个public的field,包括父类 getDeclaredField(name): 获取 ...
- go语言中的方法method
package main; import "fmt" //重新定义一个类型 //为该INT类型扩展方法 type INT int; type A struct { name str ...
- Golang 方法method
方法method Go中虽没有class,但依旧有method 通过显示说明receiver来实现与某个类型的结合 只能为同一个包中的类型定义方法 receiver可以是类型的值或者指针 不存在方法重 ...
- 提高java反射速度的方法method.setAccessible(true)
转载:http://huoyanyanyi10.iteye.com/blog/1317614 提高java反射速度的方法method.setAccessible(true) package com.c ...
- 通过反射获取及调用方法(Method)
1.获取方法使用反射获取某一个类中的方法,步骤:①找到获取方法所在类的字节码对象②找到需要被获取的方法 Class类中常用方法: public Method[] getMethods():获取包括自身 ...
- java Class中得到构造方法Constructor、方法Method、字段Field
常用方法: Constructor类用于描述类中的构造方法: Constructor<T> getConstructor(Class<?>... parameterTypes) ...
- Day15_86_通过反射机制获取所有方法(method)
通过反射机制获取所有方法(method) import java.lang.reflect.Field; import java.lang.reflect.Method; import java.la ...
- 反射【类Class、成员变量Field、方法Method】
Class<?> c = Class.forName("main.Main$MyClass"); //要包名+类名 Object obj = c.newInstance ...
随机推荐
- ajax请求回数组数据,Vue页面数组没同步问题
记录bug 为什么 ajax 获取到了 vm.$data.list 页面上却没有显示出来的? 代码 //页面 <tr v-for="item in list">{{ * ...
- nodejs初探
var http= require('http');var server= http.createServer(function(req,res){ res.writeHead(200,{" ...
- 指针函数(Pointer Function)和函数指针(Pointer to Function或Function Pointer)
一.指针函数 1.解释:指针函数很好理解:简单来说,就是一个返回指针的函数,本质是一个函数.如: int fun(int x,int y); //这是一个普通函数的声明,返回值是一个int类型, ...
- linux命令 dig-域名查询工具
博主推荐:更多网络测试相关命令关注 网络测试 收藏linux命令大全 dig命令是常用的域名查询工具,可以用来测试域名系统工作是否正常. 语法 dig(选项)(参数) 选项 @<服务器地址&g ...
- assert.throws()函数详解
assert.throws(block[, error][, message]) Node.js FS模块方法速查 期望 block 函数抛出一个错误. 如果指定 error,它可以是一个构造函数.正 ...
- wepy 编译警告去除办法
如果你用过wepy打包小程序的话,那么你一定碰到了很多坑,(什么也不用说,抱一下吧)下面记录的是本人遇到的一个小坑, 编译的时候出现了黄色警告 如果你出现了上图这样的话,相信你一定也知道什么意思,就是 ...
- 集训第六周 数学概念与方法 概率 数论 最大公约数 G题
Description There is a hill with n holes around. The holes are signed from 0 to n-1. A rabbit must h ...
- 用C# ASP.net将数据库中的数据表导出到Excel中
需要用到组件GridView和一个button即可. 给GridView添加一个数据源, 选择你想要的数据库中的表的字段,添加成功后GridView中就显示数据. 再添加一个button,双击控件添加 ...
- poj 1752 Advertisement (差分约束)
题目大意:题目大意:有n个人在一条路上跑步,广告商准备在这条路上设置广告牌,假设这条路上每一个点有一个广告牌 现在已知这n个人从Ai开始跑,到Bi结束,那么他可以看到max(Ai,Bi)-min(Ai ...
- msp430入门编程00
msp430单片机最小系统 msp430入门学习 msp430入门编程