刚接触go请教大佬们一些问题

imhere · 2018-12-17 10:23:46 · 1042 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2018-12-17 10:23:46 的主题,其中的信息可能已经有所发展或是发生改变。

这几天不忙就看了下go,然后用beego写了个demo

我是在mac上开发的,尝试部署在Linux和Windows上,我发现只需要直接build为对应平台的版本就行了,在对应的机器上不需要安装go运行环境吗?

像Node.js或者Python甚至.NET,在部署在都得在需要部署的机器上提前安装好环境,go不需要,直接build然后把build出来的文件丢到服务器上就行了?这么方便的吗?

另外还有几个问题请教一下大佬:

1.go最后打包出来的可执行文件永远只有一个吗?有没有可能根据我的业务逻辑分别打包成几大块(例如:main、lib1、lib2),虽然好像这样意义也不大?

2.写代码前需要设置GOPATH。假如我有多个项目的话GOPATH是不是也得设置多个?那GOBIN好像只能设置一个啊。 对于多个项目你们是怎么弄的?还是GOPATH只有一个,在src下建不同的文件夹来区分项目吗,最后通过go build指定路径来打包吗?

3.假如我现在打包出来一个文件为main,在Linux执行它的方式为./main(是这样的吧)

4.go有没有类似Node.js下的pm2这种守护进程管理工具? 你们在服务器上怎么部署的go?总不可能是nohup吧

最后:刚接触,可能有些地方问的不对的还请各位大佬见谅!


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1042 次点击  
加入收藏 微博
4 回复  |  直到 2018-12-20 17:37:04
Linchengqing77
Linchengqing77 · #1 · 6年之前

一个很大的可执行文件连垃圾回收机制也打进去了,GOPATH可以指定多个但编译后会默认放在第一个,我都是在src下创建不同的项目→_→

imhere
imhere · #2 · 6年之前
Linchengqing77Linchengqing77 #1 回复

一个很大的可执行文件连垃圾回收机制也打进去了,GOPATH可以指定多个但编译后会默认放在第一个,我都是在src下创建不同的项目→_→

谢谢

saberlong
saberlong · #3 · 6年之前
  1. 开发分模块和编译成一个没有因果关系的。真要从服务层面划分如soa架构或者微服务,那么就是多个可执行文件,依靠的是通信来联系</br>
  2. go1.11后,推荐尝试module, 这样项目就不用和GOPATH绑定了。 GOPATH设置一个即可,项目编译也可以写make等指定编译输出的目录。</br>
  3. 对的,可执行文件的执行方式都一样</br> 4.守护进程: os.StartProcess或 syscall.RawSyscall(syscall.SYS_FORK, 0, 0, 0)</br> 但是不太常用,不知道你所需的场景。</br> 5.最简单就是可执行文件+配置文件+加执行脚本, 如果需要再加创建systemd的脚本。 如果是docker的话,另说
imhere
imhere · #4 · 6年之前
saberlongsaberlong #3 回复

1. 开发分模块和编译成一个没有因果关系的。真要从服务层面划分如soa架构或者微服务,那么就是多个可执行文件,依靠的是通信来联系
2. go1.11后,推荐尝试module, 这样项目就不用和GOPATH绑定了。 GOPATH设置一个即可,项目编译也可以写make等指定编译输出的目录。
3. 对的,可执行文件的执行方式都一样
4.守护进程: os.StartProcess或 syscall.RawSyscall(syscall.SYS_FORK, 0, 0, 0)
但是不太常用,不知道你所需的场景。
5.最简单就是可执行文件+配置文件+加执行脚本, 如果需要再加创建systemd的脚本。 如果是docker的话,另说

谢谢

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传