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)
}
写入自己的博客中才能记得长久
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有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的字符串处理之分隔