主题
文章
项目
资源
图书
Go网址导航
下载
官方文档
英文文档
中文文档
标准库中文版
Go指南
注册
登录
首页
会员
symphony09的信息
TA的收藏
初级会员
第 74647 位会员
ID:
symphony09
注册时间:
2022-07-16 09:53:16
是否在线:
Offline
财富:
21
41
更多>>
最近发布的主题
暂无
更多>>
最近发布的文章
聊聊 Go 中没排面的元组
at
2023-03-13 00:22:23
图执行引擎那些事(二)
at
2022-07-17 14:41:54
图执行引擎那些事(一)
at
2022-07-16 15:07:55
更多>>
最近分享的资源
暂无
更多>>
最近发布的项目
暂无
更多>>
最近的评论
2023-09-04 20:29:57
评论了
主题
go里面的继承实现,父类类型做为函数入参,怎么传子类作为参数
java 的上转型确实巧妙,回归正题,用 go 的话我会这样写 ```go type ITask interface { TaskExec // 通过接口方法间接访问属性 Info() *TaskInfo } type Task struct { TaskExec TaskInfo } func (task *Task) Info() *TaskInfo { return &task.TaskInfo } // 封装属性 type TaskInfo struct { Status int Name string StartTime uint64 EndTime uint64 } type TaskExec interface { exec() } type TaskA struct { Task ParamA string } type TaskB struct { Task ParamA string } func (TaskA) exec() { // 执行任务A的逻辑 } func (TaskB) exec() { // 执行任务B的逻辑 } // 在 go 中用接口实现多态 func Exec(task ITask) { // 接口无法访问属性,通过 Info 方法间接访问 // 修改任务状态为执行中 task.Info().Status = 1 // 记录任务开始执行时间 task.Info().StartTime = uint64(time.Now().Unix()) // 这里还会有很共性逻辑处理被省略掉了 // 执行具体任务的逻辑 task.exec() // 修改任务状态为执行结束 task.Info().Status = 2 // 记录任务执行结束时间 task.Info().EndTime = uint64(time.Now().Unix()) // 这里也是还会有很共性逻辑处理被省略掉了 } func main() { ta := TaskA{} tb := TaskB{} // 嵌入 Task 的类型自动实现 ITask 接口,可以被传入 Exec 函数 Exec(&ta) Exec(&tb) } ```
2023-03-22 12:21:33
评论了
主题
go 中的范型
#8
楼
@lysShub
准备在1.21版本加入标准库的泛型map实现,就多处用到了 any 约束,不能说不存在吧。详见:https://github.com/golang/go/issues/57436
2023-03-21 22:33:11
评论了
主题
go 中的范型
#5
楼
@Neightly
大家友善交流哈,我是觉得说一下也不是坏事,能让人留点心。如果 Go Team 确实做了优化,还能水篇文章哈哈。
2023-03-21 21:42:43
评论了
主题
go 中的范型
#4
楼
@lysShub
谢谢回复,关于第一点我觉得还可以再讨论下。举例来说,泛型队列只关心元素间次序关系,不关心元素的结构和功能。这时使用 any 约束应该是恰当的,并且也不涉及断言,因为不需要使用元素的特定功能。
2023-03-19 11:03:15
评论了
主题
go 中的范型
#1
楼
@lysShub
没有质疑的意思,可以具体说说是什么糟粕吗,谢谢
最新主题
|
最新资源
|
最新评论
基于vite6+deepseek-v3搭建网页版个人AI流式聊天助手
多智能体开发框架之LangGraph全面剖析实战教程
多智能体开发框架之LangGraph全面剖析实战课
[11章全]SpringBoot 3.x + Netty + MQTT 实战物联网智能充电桩
[完结11章]SpringBoot 3.x + Netty + MQTT 实战物联网智能充电桩
[完结20周]LLM应用开发平台特训营
go-carbon v2.6.0 重大版本更新,轻量级、语义化、对开发者友好的 golang 时间处理库
vue3.5+deepseek实战大模型AI聊天对话小助手
[已完结]DeepSeek+SpringAI实战AI家庭医生应用
我做了一个下载推特视频的工具站
ansi、unicode、UCS、UTF等概念(转)
一图弄懂ASCII、GB2312、GBK、GB18030编码
如何在 Go 中使用 C++?
golang标准库中文版
Go modules:版本是如何选择的?
niuhe - IDL 生成代码,前端协议, 页面和文档插件
Vite5+Electron聊天室|electron31跨平台仿微信EXE客户端|vue3聊天程序
Tauri2.0-Vue3OS桌面端os平台|tauri2+vite6+arco电脑版OS管理系统
flutter3-dymall仿抖音直播商城|Flutter3.27短视频+直播+聊天App实例
结构体的切片(slice of struct)不等于它实现的接口的切片(slice of interface)?
xiaoyan2015
大约6小时之前
在
基于vite6+deepseek-v3搭建网页版个人AI流式聊天助手
中评论
 vue3.5+deepseek实战大模型AI聊天对话小助手 [https://studygolang.com/topics/17821](https://studygolang.com/topics/17821)
xiaoyan2015
大约6小时之前
在
vue3.5+deepseek实战大模型AI聊天对话小助手
中评论
 vite6+arco+deepseek-v3网页版ai流式多轮对话助手。 [https://segmentfault.com/a/1190000046393396](https://segmentfault.com/a/1190000046393396)
WangWangZhou
3天之前
在
Go每日一题(31)
中评论
mark
wangzhongyang007
4天之前
在
来看看现在go开发岗10k的面试强度
中评论
你觉得这个难度怎么样?
wangzhongyang007
5天之前
在
金三银四真实面经分享
中评论
也欢迎大家向我投稿最近的面经,有偿~
brothersam
8天之前
在
Go每日一题(26)
中评论
o
wangzhongyang007
9天之前
在
2024年最受欢迎的5个Go框架
中评论
@pangqr
是的,gin更加轻量级,GoFrame适合稍微大型一点的项目
wangzhongyang007
10天之前
在
金三银四快过去一半了,是时候加把劲了
中评论
需要简历优化&就业辅导的朋友,可以直接加我微信:wangzhongyang1993
ltp5343
11天之前
在
[30k-60k]web3头部交易所公司招聘P6-Go后端开发
中评论
顶
WangWangZhou
11天之前
在
Go每日一题(23)
中评论
### **正确答案** - **A. `p.name`** - **C. `(*p).name`** --- ### **详细解析** #### **1. `p.name`** - 在 Go 语言中,如果 `p` 是一个指针变量,可以直接通过 `p.name` 访问其成员变量。 - Go 语言会自动解引用指针,因此不需要显式使用 `*` 操作符。 - 示例: ```go type Person struct { name string } func main() { p := &Person{name: "Alice"} fmt.Println(p.name) // 输出: Alice } ``` #### **2. `(*p).name`** - 这是传统的指针解引用方式,通过 `*p` 获取指针指向的结构体,然后访问其成员变量。 - 示例: ```go type Person struct { name string } func main() { p := &Person{name: "Alice"} fmt.Println((*p).name) // 输出: Alice } ``` --- #### **错误选项解析** #### **B. `(&p).name`** - `&p` 表示获取指针 `p` 的地址,即指向指针的指针。 - 这种方式是错误的,因为 `&p` 是一个指向指针的指针,而不是指向结构体的指针。 - 示例: ```go type Person struct { name string } func main() { p := &Person{name: "Alice"} fmt.Println((&p).name) // 编译错误: (&p).name undefined } ``` #### **D. `p->name`** - `p->name` 是 C/C++ 语言中的语法,用于通过指针访问成员变量。 - Go 语言中没有 `->` 操作符,因此这种方式是错误的。 - 示例: ```go type Person struct { name string } func main() { p := &Person{name: "Alice"} fmt.Println(p->name) // 编译错误: 语法错误 } ``` --- ### **总结** - 在 Go 语言中,通过指针变量 `p` 访问其成员变量 `name` 的正确方式是: - **`p.name`**(推荐,Go 语言会自动解引用指针)。 - **`(*p).name`**(显式解引用指针)。 - 错误的方式包括: - `(&p).name`(获取指针的地址,无意义)。 - `p->name`(Go 语言不支持 `->` 操作符)。
X
登录和大家一起探讨吧
用户名
密码
记住登录状态
登录
GitHub 登录
忘记密码?
还不是会员
现在注册
最近的评论