go的表达式调用编译器不会进行自动转换 未完成

package main

import (
	"fmt"
)

type T struct {
	a int
}

func (t T) Get() int {
	return t.a
}
func (t *T) Set(i int) {
	t.a = i
}

//表达式`T.Get`和`(*T).Set`被称为方法表达式,
//需要注意的是在方法表达式中编译器不会做自动转换。
//值调用会自动转换,表达式调用则不会,例如:
type Data struct{}

func (d Data) TestValue() {
	fmt.Println("TestValue")
}

func (d *Data) TestPointer() {
	fmt.Println("TestPointer")
}

//声明一个类型变量a
var a Data = struct{}{}
var  Data1 = struct{}

func main() {
	//表达式调用编译器不会进行自动转换
	a.TestValue()
	//Data1.TestValue()
	//Data.TestValue(&a)
	(*Data).TestPointer(&a)
	//Data.TestPointer(&a) //type Data has no method TestPointer
	//值调用编译器会进行自动转换

	//y: = (&a).TestValue //编译器帮助转换a.TestValue
	//g: = a.TestPointer  //会转换为(&a).TestPointer
	//fmt.Println(y,g)
}
posted @   ty1539  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2022-03-04 go的rand.Intn()用法和猜年龄, rand.Int()和字符串反转
2022-03-04 go的时间格式和斐波那契函数
2022-03-04 go的字符串处理之分隔
点击右上角即可分享
微信分享提示