配置 go开发环境

Go语言安装
  • Linux
    可以在Go语言官网https://golang.org/dl/下载安装包,这里以go1.17.7.linux-amd64.tar.gz为例:

    1. 执行tar -C /usr/local -xzf go1.17.7.linux-amd64.tar.gz,将安装包解压到 /usr/local 目录下。
    2. 编辑 ~/.bashrc 将export PATH=$PATH:/usr/local/go/bin命令添加到最后,然后执行 source ~/.bashrc 使修改生效。
    3. 编辑 ~/.bashrc 文件,将命令export GOPATH=/go(目录可自己指定)添加到最后,然后执行 source ~/.bashrc 使修改生效。

    上面在 ~/.bashrc 配置,指针对当前用户,如果需要针对所有用户生效,那么需要在 /etc/profile 配置 上述操作。

  • windows
    安装完成后配置好环境变量

安装完成后,使用go version 或者 go env 命令检查是否安装成功:

image.png

GOROOT

Go 语言的安装目录

GOPATH

Go寻找依赖包时会根据GOPATH来寻找。
GOPATH约定目录约定有3个目录:

  • src 存放源代码
  • pkg 存放编译后生成的文件
  • bin 存放编译后的可执行文件
使用go mod

go mod 是 go 1.11 新加的特性,用来支持包管理,开启 go mod 功能,cmd 或者 终端 输入:

go env -w GO111MODULE=on
设置代理

当我们写go需要下载第三方依赖包时,因为某些原因,不能成功下载,此时建议设置国内代理代理,cmd 或者 终端 输入:

go env -w GOPROXY=https://goproxy.cn,direct
goland IDE 配置go开发环境

工作日常,是在win上开发代码,Linux上编译运行代码,所以有必要配置好 goland + dlv 的远程调试代码环境。
首先需要在Linux 上安装go的调试器 dlv 。

  • 远程调试

    • 在 linux 上执行

      # dlv --listen=:2345 --headless=true --api-version=2  exec ./main
      

      如果需要传入参数,则:

      # dlv --listen=:2345 --headless=true --api-version=2 exec ./main  ./server.json
      

      如果需要传入的参数是这种类型的:./main --config=config.toml,则:

      # dlv --listen=:2345 --headless=true --api-version=2 exec ./main  -- --config=config.toml
      

      如果 linux 上面的 dlv 和 win 上的 dlv 版本不一致,会报错,此时,我们可以使用--check-go-version=false来避免这个报错,但强烈建议保持一致。

      # dlv --listen=:2345 --headless=true --api-version=2 --check-go-version=false exec ./main
      

      goland IDE 配置远程调试:


      image.png

      然后 goland 上选择debug运行刚才配置的远程调试

  • 快捷键

    快捷键 作用
    Ctrl + Shift + N 文件搜索
    Ctrl + G 跳转指定行数
    Ctrl + Alt + L 格式化代码
    Ctrl + / 单行注释
    Ctrl + Shift + / 多行注释
    Ctrl + BF4 快速跳转到结构体或方法的定义位置
    Ctrl + F 查找文本
    Ctrl + Shift + F 全局查找
    Ctrl + R 替换文本
    Ctrl + N 快速搜索某个 struct 结构体所在的文件
    Alt + 回车 自动导入需要导入的包
    Shift + F6 重命名文件夹、文件、方法、变量名等
    Ctrl + Shift + Alt + N 查找类中的方法或变量
    Ctrl + X 删除当前光标所在行
    Ctrl + D 复制当前光标所在行
配置vscode的go开发环境
  1. 安装go插件
  2. ctrl + shift + p 输入 go,选择如下,安装相应的工具。
    image.png

不过使用 vscode 发现,代码补全和重构方面功能还是不如 goland IDE。

  • 快捷键

    快捷键 作用
    ctrl+b 隐藏 / 显示侧边栏
    Shift+Ctl+O 搜索函数
    ctrl+t 搜索结构体
    ctrl+g 跳转到行
    ctrl+p 跳转到文件
    ctrl+shift+f 全局搜索
  • 设置文件夹内文件过滤
    文件 > 首选项 > 设置 > 选择User Settings tab ,打开 settings.json

    "files.exclude": {
        "**/.git": true,
        "**/.svn": true,
        "**/.hg": true,
        "**/CVS": true,
        "**/.DS_Store": true,
        "**/*.meta":true
    }
    
  • 设置自动猜测文件编码
    文件 > 首选项 > 设置
    搜索 files.autoGuessEncoding 打钩 Auto Guess Encoding

  • 设置选中高亮,原生自带的选中高亮不明显,这里改一下。
    文件 > 首选项 > 设置
    搜索 workbench.colorCustomizations,点击Edit in seting.json,添加

    "editor.selectionHighlightBackground": "#581ee0", 
    "editor.findMatchHighlightBorder": "#000000"
    
    image.png
  • 设置编辑字体大小
    文件 > 首选项 > 设置 > 文本编辑器 > 字体

  • 禁用自动更新
    文件 > 首选项 > 设置 > 搜索update mode并将设置更改为none。

  • 设置缩略图宽度
    文件 > 首选项 > 设置 > 搜索缩略图

  • 设置打开的文件占用一个tab

    • 双击打打开文件就会固定为一个tab
    • 文件 > 首选项 > 设置
      搜索并设置 "workbench.editor.enablePreview": false
      这样设置,每次单击打开文件也会固定为一个tab
  • 设置文件自动保存

hello world

新建 main.go,内容如下:

package main

import "fmt"

func main() {
    fmt.Println("hello world")
}

使用命令编译并运行:go mod init main && go build && ./mian


附:vscode 其他插件推荐

  • Chinese
    中文语言插件

  • SFTP
    ctrl+shift+p输入sftp config

    {
      "name": "jdy",
      "host": "114.67.xx.xx",
      "protocol": "sftp",
      "port": 22,
      "username": "root",
      "password": "xxx",
      "remotePath": "/root/code/cp_pythonvm",
      "uploadOnSave": false,
      "ignore": [
          ".vscode"
      ]
    }
    
  • trailing spaces
    默认配置,显示文件中的空格,保持文件干净,让空格无处遁形

  • One Monokai Theme
    主题插件

  • Material Icon Theme
    图标美化插件,可以使得文件结构更加清晰

  • bracket pair colorizer
    给括号上色,避免一层层的括号难看,默认配置就行

  • shell-format
    shell 脚本代码格式化插件。

  • Todo Tree
    跟踪文件的todo,fixme

  • Bookmarks
    书签插件
    ctrl+alt+K 创建或消除书签
    ctrl+alt+j 跳转到前一个书签
    ctrl+alt+l 跳转到后一个书签

    注意:需要设置一下,支持 在所有文件中跳转

  • Project Manager
    管理多个项目

  • Code Spell Checker
    代码拼写检查

  • filesize
    显示文件大小

  • hexdump
    查看二进制文件

  • GitLens
    Git 源代码管理插件

  • Git History
    可以查看历次提交的作者、日期、Hash 值、提交内容、修改的文件等。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,277评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,689评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,624评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,356评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,402评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,292评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,135评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,992评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,429评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,636评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,785评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,492评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,092评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,723评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,858评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,891评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,713评论 2 354

推荐阅读更多精彩内容