V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nativeBoy
V2EX  ›  Visual Studio Code

用 vscode 开发 go,有点劝退

  •  
  •   nativeBoy · 2024-08-16 15:54:11 +08:00 · 8700 次点击
    这是一个创建于 384 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前团队从 Java 转 go ,考虑到 goland 花钱且臃肿,就开始使用 vscode 来学习 go

    得益于 go 的模块机制,配合 Code Runner 插件,学习过程中,运行没什么太大问题

    但是项目代码一接过来,就有问题,项目需要在 linux 环境下才能编译成功,因此要搞远程开发,但 vscode 的远程开发的代码会在 linux 端,但我提交代码需要公司指定的 VPN ( linux 上基本不可用),因此陷入了死局。

    反观 goland ,运行配置可以设置在远端进行编译、运行,但代码在本地,完全不需要自己操心(当然 goland 也是把代码复制一份过去再编译,但不需要自己麻烦了)。以及 IDEA 系的 git 视图确实美观,自己可能要买 goland 了

    我也研究了 vscode 的运行配置,不太能用,还是放弃了
    第 1 条附言  ·  2024-08-16 17:07:29 +08:00
    感谢大家给的建议,有位老哥说虚拟机 NAT ,我突然有了启发,Ubuntu 原本就是 NAT 模式,我赶紧去配置了 hosts ,宿主机打开公司 VPN ,然后 Ubuntu 就可以拉到代码了!非常感谢!

    wsl 刚安装完,一会也试试
    唯一的问题恐怕就是 git 可视化界面了😂
    第 2 条附言  ·  2024-08-16 17:22:33 +08:00
    尝试了 wsl ,直接共享本地的 hosts 和网络,直接就可以访问到代码库,连 hosts 都不需要额外修改了,太强了,幸亏来问问了
    58 条回复    2024-08-17 14:24:40 +08:00
    povsister
        1
    povsister  
       2024-08-16 15:57:06 +08:00
    一直全家桶订阅,goland 体验一直很棒。
    从接触 go 开始大概四五年前,折腾过 vscode+go plugin ,不太能用,比同期 goland 体验差很多。
    dyllen
        2
    dyllen  
       2024-08-16 16:05:18 +08:00
    goland 体验是更好,开箱即用,代码提示比 vsc 强。
    me1onsoda
        3
    me1onsoda  
       2024-08-16 16:08:41 +08:00
    为什么要买 goland ,IDEA 通用啊,之前写 Java 那肯定买过 IDEA 吧
    PolarBears
        4
    PolarBears  
       2024-08-16 16:10:59 +08:00
    本地开 http 代理给 linux 用或者 ssh 远程端口转发如何?
    EndlessMemory
        5
    EndlessMemory  
       2024-08-16 16:11:21 +08:00
    我草,我以为大伙用的都是破解版
    superchijinpeng
        6
    superchijinpeng  
       2024-08-16 16:11:59 +08:00
    dev container 啊
    xujiabin
        7
    xujiabin  
       2024-08-16 16:12:00 +08:00
    我也碰到过这个问题, 后来发现 go 是支持交叉编译的, 可以找找相关参数呢
    caola
        8
    caola  
       2024-08-16 16:15:56 +08:00
    从来没有付费过(主要是穷),用 jetbra 脚本,运行 install-current-user.vbs ,然后就是真香原理…
    wei2629
        9
    wei2629  
       2024-08-16 16:19:08 +08:00
    要不是会点 ts 能写 vscode 的插件,真的要换 goland 。总觉得 vscode 用着卡卡的。
    winglight2016
        10
    winglight2016  
       2024-08-16 16:25:04 +08:00
    本地如果是 Windows ,需要 linux 环境运行,可以在 wsl 里开发,host 的 VPN 在 wsl 里一样可以生效,也能提交代码
    nativeBoy
        11
    nativeBoy  
    OP
       2024-08-16 16:25:59 +08:00
    @povsister @dyllen 确实 jetbrains 的产品很省心
    @me1onsoda @EndlessMemory 我还没买,Java 是靠社区版和 EAP 版苟延残喘
    @PolarBears ssh 端口转发我去了解一下
    @xujiabin 同事在 Windows 上 build 项目的时候各种 gcc 报错😂
    @superchijinpeng dev container 也是代码在容器里呢,我需要代码在 Windows 上以便于提交代码
    loolac
        12
    loolac  
       2024-08-16 16:26:40 +08:00
    从你的描述来看你是 windows 环境,wsl 也不能用吗?
    dacapoday
        13
    dacapoday  
       2024-08-16 16:27:36 +08:00
    vs code 有 git graph 插件,官方最近也内置了 git 可视化历史提交。
    ivan_wl
        14
    ivan_wl  
       2024-08-16 16:30:08 +08:00
    代码放本地,写个脚本 rsync 同步到服务器上编译运行
    dacapoday
        15
    dacapoday  
       2024-08-16 16:30:49 +08:00   ❤️ 2
    vscode 自定义能力太强,使用传统 IDE 开发的人不一定能适应,有 vim 或 emacs 经验的,应该能理解 vscode 这种模式的先进性
    xsen
        16
    xsen  
       2024-08-16 16:42:01 +08:00   ❤️ 1
    1. 解决 cgo 部分在 window 编译问题
    2. window 开代理,linux 下给 git 设置代理用于提交代码
    3. 虚拟机装 linux ,网络设置为 nat + bridge ,提交代码走 nat
    cutecore
        17
    cutecore  
       2024-08-16 16:42:16 +08:00
    家里点写点小东西会用 vsc ,在公司开发还是得用 idea
    zhtyytg
        18
    zhtyytg  
       2024-08-16 16:45:07 +08:00   ❤️ 1
    不讨论 vscode ,歪个题。
    《项目需要在 linux 环境下才能编译成功,因此要搞远程开发》后者跟前者没有必要的因果关系。本人经验有限,但是过往经历看过来,貌似没有什么编译是只能在 xxx 环境下才能编译成功的,无非就是缺了一些环境配置过程(类比交叉编译)。
    退一步讲,就算只能在 linux 下编译 go ,大可选择 wsl/docker 这一类工具辅助开发。
    pmx1990
        19
    pmx1990  
       2024-08-16 16:50:16 +08:00
    实在不行 jetbrains gateway 玩意了解一下
    nxcdJaNnmyF9O90X
        20
    nxcdJaNnmyF9O90X  
       2024-08-16 16:53:23 +08:00
    go 是未来趋势 我用过多种语言 最终 go 是我最喜欢的主力语言
    rickiey
        21
    rickiey  
       2024-08-16 16:56:07 +08:00
    你必须使用 windows 吗?我 6 年 go 都是在 linux 系统上
    Vegetable
        22
    Vegetable  
       2024-08-16 16:56:09 +08:00
    dev container 和 wsl 都可以解决 vpn 的问题,都会默认走宿主机的网络。代码本地+远程 runner 的形式,要求远程并不需要依赖 vpn 的服务,比如开发数据库/基础配置分发服务之类的东西。
    Serefrefee
        23
    Serefrefee  
       2024-08-16 16:57:21 +08:00
    我没写过 Go 哈,但是从你第二段描述来看,为啥不能用 Jenkins 呢,你本地用 VSCode,传完代码用 Jenkins 去 Linux 环境编译
    xcsoft
        24
    xcsoft  
       2024-08-16 16:59:46 +08:00
    我自己一直用的 Goland 写,student packet, Jetbrain 家的东西 很好用
    shenyuzhi
        25
    shenyuzhi  
       2024-08-16 17:08:36 +08:00
    说实话还是大 JB 好用。VSC 写啥都有种凌乱感。
    lsk569937453
        26
    lsk569937453  
       2024-08-16 17:08:42 +08:00
    但是项目代码一接过来,就有问题,项目需要在 linux 环境下才能编译成功,因此要搞远程开发,但 vscode 的远程开发的代码会在 linux 端,但我提交代码需要公司指定的 VPN ( linux 上基本不可用),因此陷入了死局。
    ========================================================================
    WSL 不能用吗?
    Jinnrry
        27
    Jinnrry  
       2024-08-16 17:16:58 +08:00
    生产力还的是 goland 。vscode 想要能用,必须得装一堆插件,当你好不容易费了老大劲把一堆插件装上去配置好以后内存 cpu 占用比 goland 还高。关键是这些插件装好也没 goland 智能好用。goland 开箱即用,效果性能都好。

    唯一不好就是要钱,不过我们公司买企业订阅,无所谓
    guanhui07
        28
    guanhui07  
       2024-08-16 17:18:01 +08:00
    goland 习惯了,提示更友好,还有快捷键 自己配了一套
    Richardhtw
        29
    Richardhtw  
       2024-08-16 17:19:57 +08:00
    @dacapoday #13 vscode 的 git graph 、git history 、GitLens 都试过,个人感觉体验还是不如 jetbrains 系的
    simen513
        30
    simen513  
       2024-08-16 17:20:01 +08:00
    最简单的方法:什么都不用变,本地 git repo 再备份一个,每次手动从源头 pull 之后,就 push 到 linux 上的 repo 的一个临时 branch 上,然后 linux 再 checkout 一下这个临时 branch 。
    wzy44944
        31
    wzy44944  
       2024-08-16 17:22:13 +08:00   ❤️ 1
    也是 go 后端,用了两年 goland ,切换到 vscode 大概 2 年,功能什么的基本没差,唯一有差的是 vscode 感觉更慢,用久了得重启下,不知道其他人有没有感受,怀疑是 gopls 的问题
    hongchends1
        32
    hongchends1  
       2024-08-16 17:23:59 +08:00
    都用 go 了 要不考虑下 docker 部署? 本地编译好 推到 Harbor ? Linux 直接 run
    poembre
        33
    poembre  
       2024-08-16 17:30:09 +08:00
    vscode 挺好用的啊, 代码也不用在本地运行。 git 提交到指定分支, linux 那边 ci 脚本 帮你打包 并且 运行起来
    qiyilai
        34
    qiyilai  
       2024-08-16 17:43:21 +08:00
    一个 idea 搞定 java go python 前端
    vx7298
        35
    vx7298  
       2024-08-16 17:44:17 +08:00
    远程开发,vscode 是目前唯一战斗力的,goland 不要太垃圾,远程开发,代码本来就在远程服务器,本地提交 git 本身就是矛盾的,正常的逻辑是,开发服务器就可以提交的,vpn 连 linux 客户端都没有,啥 vpn 协议啊,貌似是不是不让配服务器啊,,
    yidev
        36
    yidev  
       2024-08-16 17:57:15 +08:00
    wsl 里可以直接访问 windows 的代码啊 /mnt/d/.... git 可视化也不是问题, 都可以在 windows 下操作, 直接到 wsl 里编译就可以了.
    james122333
        37
    james122333  
       2024-08-16 17:57:20 +08:00 via Android
    windows 下你只能用 wsl
    使用 msys2 下的 mingw 版本 go 不支援信号功能
    james122333
        38
    james122333  
       2024-08-16 17:58:40 +08:00 via Android
    什么 vpn?
    smirkcat
        39
    smirkcat  
       2024-08-16 17:59:17 +08:00
    一看你就了解太少呀,windows 下面可以用 wsl 无缝切换到 linux ,编译运行,我已经用了很多年
    bronyakaka
        40
    bronyakaka  
       2024-08-16 18:18:59 +08:00
    拥有开源免费全家桶路过,感谢 jetbrains 的支持
    shawngao
        41
    shawngao  
       2024-08-16 18:47:44 +08:00
    VSCode 不解释
    david98
        42
    david98  
       2024-08-16 19:21:49 +08:00
    vscode 和 goland 都在用。
    vscode 远程开发很好用,你这种场景 用 wsl2 最好(配合 goland ),如果运行有问题(主要 wsl2 相当于一个容器环境),本地用 hyper-v 弄个虚拟机,直接本地开发本地提交。单论远程开发的支持 个人觉得 goland 支持地不如 vscode 。
    goland 要是拿来开发 cgo ,c 代码根本没法跳转 简直要吐。vscode 在方面强不是一两个档次。
    如果拿来开发 rust ,混合 c 代码,配置 lldb ,简直不要太好用。jetbrains 全家桶这方面那就更差劲了。因为后端用的不是 lldb
    sophos
        43
    sophos  
       2024-08-16 19:25:17 +08:00
    虽然我有 jetbrains 的免费 license ,但我还是用 vscode :-)
    远程开发体验秒杀其他 IDE
    GoodAfternoon
        44
    GoodAfternoon  
       2024-08-16 19:46:16 +08:00
    除了 java 用 IDEA ,其他全部 vscode 。
    cqu1980
        45
    cqu1980  
       2024-08-16 20:25:30 +08:00
    golang 是可以交叉编译的吧?我没记错的话,可以在 windows 下编译 exe ,也可以编译 linux 的可执行程序,同理 linux 也一样的
    yb2313
        46
    yb2313  
       2024-08-16 20:29:12 +08:00
    wsl2, 启动
    cqu1980
        47
    cqu1980  
       2024-08-16 20:31:08 +08:00
    windows 下面写个 bat
    set GOOS=linux
    go build -ldflags "-s -w"

    就可以直接编译成 linux 的了,上传到服务器,chmod 777 编译好的文件名就行了
    wwulfric
        48
    wwulfric  
       2024-08-16 20:31:50 +08:00
    怎么设置在远端编译和运行的,我的 python 项目也想这么搞
    cqu1980
        49
    cqu1980  
       2024-08-16 20:44:31 +08:00
    @cqu1980 或者用
    go env -w GOOS=linux
    go build -ldflags "-s -w"
    用 cmd 命令直接编译,linux 下面一样
    go env -w GOOS=windows
    go build -ldflags "-s -w"
    直接就可以编译出 exe 了
    gouflv
        50
    gouflv  
       2024-08-16 21:20:52 +08:00 via iPhone
    我比较好奇的是你这个团队,是怎么推进语言转换的
    以至于这种环境问题在内部都没法消化
    jheroy
        51
    jheroy  
       2024-08-17 08:22:09 +08:00
    远程开发直接用 vim/neovim ,git 界面用 lazygit ,都是纯终端程序
    chrosing
        52
    chrosing  
       2024-08-17 10:42:48 +08:00
    @EndlessMemory 有些插件如果是破解版就无法使用,所以就入了个人版本的
    dyllen
        53
    dyllen  
       2024-08-17 11:05:39 +08:00
    我是开了个 Ubuntu 虚拟机,设置了共享主机代码文件夹到虚拟机,直接可以互相读写。
    nativeBoy
        54
    nativeBoy  
    OP
       2024-08-17 12:15:17 +08:00
    @winglight2016 @loolac @lsk569937453 @james122333 @smirkcat @yb2313
    尝试了 wsl2 了,发现和主机共享网络和 hosts ,可以解决我的问题,感谢
    nativeBoy
        55
    nativeBoy  
    OP
       2024-08-17 12:18:59 +08:00
    @wwulfric pycharm 里面有运行配置,在里面可以选择远端服务器,ssh 连过去
    @gouflv 刚转 go 不久,部门没做过 go ,项目代码都是第三方厂商给的,各种坑,目前还在研究代码
    @jheroy 纯终端还是门槛高
    @Vegetable 确实是走宿主机的网络的,目前已经在用了
    RockShake
        56
    RockShake  
       2024-08-17 13:38:42 +08:00
    环境配置标准化也是 DevOps 的重要组成部分
    3IOhG7M0knRu5UlC
        57
    3IOhG7M0knRu5UlC  
       2024-08-17 14:04:52 +08:00
    你这个问题和 ide 关系不大,是工具链拉胯了
    Ipsum
        58
    Ipsum  
       2024-08-17 14:24:40 +08:00
    所以收费的比免费的好用。另外个人用户买 goland 其实还算能接受也就 800 。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4853 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 09:45 · PVG 17:45 · LAX 02:45 · JFK 05:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.