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

用 vscode 开发 go,有点劝退

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

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

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

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

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

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

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

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