V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
V2EX  ›  chaleaochexist  ›  全部回复第 4 页 / 共 65 页
回复总数  1284
1  2  3  4  5  6  7  8  9  10 ... 65  
2025 年 8 月 13 日
回复了 chaleaochexist 创建的主题 Go 编程语言 请教 golang 依赖注入的实际问题
实际上我第一版 --> 在我提供的 github 仓库中没有体现, 是我之前在工作中的第一版.
2025 年 8 月 13 日
回复了 chaleaochexist 创建的主题 Go 编程语言 请教 golang 依赖注入的实际问题
@NessajCN 不过还是谢谢你耐心和我讨论问题... 希望你能和我继续 讨论.
2025 年 8 月 13 日
回复了 chaleaochexist 创建的主题 Go 编程语言 请教 golang 依赖注入的实际问题
@NessajCN

#3 的例子中 client.connect(ip) 的用法和 NewSshClient(ip) 没有本质区别.
实际上我第一版就是类似 client.connect(ip)的写法.

"sshClient 显然是个实例,咋会是接口呢。" 在我 github 的例子中 sshClient 是接口
https://github.com/chaleaoch/golang_demo/blob/master/v1/internal/task/a.go#L22

"都说了接口不是这么用."
接口实现了鸭子类型.
然后你说我得哪个接口用的不对是指 provider 吗? 通过 provider.GetFactory 拿到了一个 sshClient 的工厂函数, 然后再实例化这个 sshclient 是不对的, 应该直接传 sshclient 然后 sshclient.connect(ip) 是这个意思吗? 我没觉得这俩有本质区别啊.

但是我得例子中的问题不在这里, 而是引入了 handler 之后, 在哪里 定义接口的问题.
2025 年 8 月 13 日
回复了 chaleaochexist 创建的主题 Go 编程语言 请教 golang 依赖注入的实际问题
@NessajCN 好吧...其实我根本就不会 java...
golang 如果不通过 interface 没法 mock.

或者 sshClient 这个接口 可以有多个实现. 我希望注入而不是将 NewsshClient1 改成 NewsshClient2
2025 年 8 月 13 日
回复了 chaleaochexist 创建的主题 Go 编程语言 请教 golang 依赖注入的实际问题
无论是 --> ~~无论是~~
2025 年 8 月 13 日
回复了 chaleaochexist 创建的主题 Go 编程语言 请教 golang 依赖注入的实际问题
@NessajCN 像你这么写, 最大的问题是如何 mock?

无论是 GetByType 是查询数据库的, 如果不做成接口, 如何 mock
ssh 也是, 在单元测试的时候, 我不希望真的去 ssh 执行一条命令.
2025 年 8 月 13 日
回复了 chaleaochexist 创建的主题 Go 编程语言 请教 golang 依赖注入的实际问题
@everhythm
@darksword21
@Sendya
@iseki
@NessajCN
@sthwrong
@sunny352787
@Dorathea
@NessajCN

谢谢你们的回复, 我写了一个 伪代码, 希望可以把问题解释清楚.

https://github.com/chaleaoch/golang_demo.git

一共是三个版本 v1, v2, v3 我把问题都放到了注释中, 可以搜索关键字 "问题" . 各个版本之间的主要差别, 可以搜索关键字 "修改"

如果我得代码有其他的地方的写法上的问题, 随意批评指导, 谢谢你们. 谢谢!!
2025 年 8 月 12 日
回复了 chaleaochexist 创建的主题 Go 编程语言 请教 golang 依赖注入的实际问题
@NessajCN 因为注入嘛, 我在注入的时候(也就是初始化的时候) 是不知道 ip 的.

我现在的代码和你的例子差不多, 只不过不是用的 connect 而是注入了一个无参的函数, 这个函数返回一个工厂函数, 这个工厂函数返回 sshclient.

如果 sshclient 的 ip 是静态的类似 db.DB, 直接定义在 handler 和 task 的公共底层. 注入即可, 就没有这么多麻烦事了.
2025 年 8 月 10 日
回复了 chaleaochexist 创建的主题 程序员 grpc gateway 存在的意义是什么
@seth19960929 明白, 所以当后续有新的第三方需要 http 的场景的时候, 就是 grpc-gateway 大放光彩的时候了?

受教, 多谢.
2025 年 8 月 10 日
回复了 chaleaochexist 创建的主题 程序员 grpc gateway 存在的意义是什么
下载 --> 现在
json-web --> grpc-web
2025 年 8 月 10 日
回复了 chaleaochexist 创建的主题 程序员 grpc gateway 存在的意义是什么
@fuzzsh 下载前端早就不是切图仔了, 用 json-web
另外如果是和前端配合, 后端一开始就不可能用 grpc.


@seth19960929 大佬你指的是哪句话 "挺多物联网用的(什么?),"
2025 年 8 月 10 日
回复了 chaleaochexist 创建的主题 程序员 grpc gateway 存在的意义是什么
@mooyo 有道理!!!
2025 年 8 月 10 日
回复了 chaleaochexist 创建的主题 程序员 grpc gateway 存在的意义是什么
@seth19960929 或者说为什么会有人一开始用 grpc 开发一套系统给外部调用?
2025 年 8 月 10 日
回复了 chaleaochexist 创建的主题 程序员 grpc gateway 存在的意义是什么
@seth19960929 代理一层 是因为 rpc 提供的服务是不考虑 客户端实际场景的, 是站在自己人内部调用的角度.

如果是考虑外部调用的话, 我就不会用 grpc 了. 不知道我表达的是否清晰.
2025 年 8 月 10 日
回复了 chaleaochexist 创建的主题 程序员 grpc gateway 存在的意义是什么
@seth19960929 你这个假设不太实际啊, 真给我 1kw 我绝逼单独开发一套...保准让客户满意.
@Jinnrry
我们结论是,别总是用老思想写新代码,代码里面写个 new 有啥问题吗?
>>> 最主要的问题是 单元测试不好 mock
既不影响性能又不影响可读性,搞个依赖注入,查问题的时候一脸懵逼,这函数哪里调用的,那对象哪里创建的。
>>> 让 ide 帮助你. 接口直接跳转结构体. 但是如果有多个结构体都实现了这个接口, 确实是费劲.
为啥其他语言都没有大面积流行依赖注入这一套?
>>> 因为 python 的动态类型不需要注入, 也能实现单测和 mock. 另外, 就是 django 的那种另类注入 importlib.import("a.b.c.redis_client")
1. wsl 配置镜像网络
2. 科学上网, 虚拟网卡模式

如果是代理模式, 那就走代理.
2025 年 7 月 21 日
回复了 littleG 创建的主题 生活 周日了,明天就周一了,同志们周末都做了什么?
别提了 我他喵的也不知道干了什么.
如果一定要说 那就是陪娃.
@Chicagoake 谢谢 后来 找到了. -- GPT 找到的.
2025 年 7 月 5 日
回复了 renyixu 创建的主题 生活 楼上的老大爷早上五点就直播怎么解决
@treo 想到了户晨风的直播间...
1  2  3  4  5  6  7  8  9  10 ... 65  
About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2921 Online   Highest 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 24ms · UTC 06:37 · PVG 14:37 · LAX 23:37 · JFK 02:37
♥ Do have faith in what you're doing.