mirror of
https://github.com/wahyd4/wahyd4.github.com.git
synced 2026-08-09 05:15:56 +10:00
589 lines
38 KiB
HTML
589 lines
38 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width">
|
||
<meta name="theme-color" content="#222"><meta name="generator" content="Hexo 6.3.0">
|
||
|
||
<link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png">
|
||
<link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32-next.png">
|
||
<link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16-next.png">
|
||
<link rel="mask-icon" href="/images/logo.svg" color="#222">
|
||
|
||
<link rel="stylesheet" href="/css/main.css">
|
||
|
||
|
||
|
||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/7.0.0/css/all.min.css" integrity="sha256-VHqXKFhhMxcpubYf9xiWdCiojEbY9NexQ4jh8AxbvcM=" crossorigin="anonymous">
|
||
|
||
<script class="next-config" data-name="main" type="application/json">{"hostname":"toozhao.com","root":"/","images":"/images","scheme":"Muse","darkmode":false,"version":"8.28.0","exturl":false,"sidebar":{"position":"left","width_expanded":320,"width_dual_column":240,"display":"post","padding":18,"offset":12,"b2t":true,"scrollpercent":true},"hljswrap":true,"codeblock":{"theme":{"light":"default","dark":"stackoverflow-dark"},"prism":{"light":"prism","dark":"prism-dark"},"copy_button":{"enable":true,"style":"mac"},"fold":{"enable":false,"height":500},"language":false},"bookmark":{"enable":true,"color":"#222","save":"auto"},"mediumzoom":true,"lazyload":false,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"stickytabs":false,"motion":{"enable":false,"async":false,"duration":200,"transition":{"menu_item":"fadeInDown","post_block":"fadeIn","post_header":"fadeInDown","post_body":"fadeInDown","coll_header":"fadeInLeft","sidebar":"fadeInUp"}},"prism":false,"i18n":{"placeholder":"搜索...","empty":"没有找到任何搜索结果:${query}","hits_time":"找到 ${hits} 个搜索结果(用时 ${time} 毫秒)","hits":"找到 ${hits} 个搜索结果"},"path":"/search.xml","localsearch":{"enable":true,"top_n_per_article":5,"unescape":false,"preload":false,"trigger":"auto"}}</script><script src="/js/config.js" defer></script>
|
||
|
||
<meta name="description" content="说到 IDE 我们想到的都是 Intellij 和 Eclipse系列这样的几百兆的桌面应用程序,它让我们编程效率得以很大提升,在日常工作中变得离不开这些软件。我们最喜欢用的 IDE 功能主要有: 代码自动补全 代码重构 代码格式化 代码调试 代码高亮 代码错误检查 代码引用查询与跳转 但往往 IDE 也有占用内存多,时不时反应卡顿等问题。因此很多程序员在开发一些动态语言、脚本语言的时候更倾向">
|
||
<meta property="og:type" content="article">
|
||
<meta property="og:title" content="使用 VS Code 快速搭建你的 Golang 开发 IDE">
|
||
<meta property="og:url" content="https://toozhao.com/2017/08/23/vscode-golang/">
|
||
<meta property="og:site_name" content="大染志">
|
||
<meta property="og:description" content="说到 IDE 我们想到的都是 Intellij 和 Eclipse系列这样的几百兆的桌面应用程序,它让我们编程效率得以很大提升,在日常工作中变得离不开这些软件。我们最喜欢用的 IDE 功能主要有: 代码自动补全 代码重构 代码格式化 代码调试 代码高亮 代码错误检查 代码引用查询与跳转 但往往 IDE 也有占用内存多,时不时反应卡顿等问题。因此很多程序员在开发一些动态语言、脚本语言的时候更倾向">
|
||
<meta property="og:locale" content="zh_CN">
|
||
<meta property="og:image" content="https://toozhao.com/vscode.gif">
|
||
<meta property="og:image" content="https://debug.png/">
|
||
<meta property="og:image" content="https://toozhao.com/code-runner.png">
|
||
<meta property="article:published_time" content="2017-08-23T07:26:00.000Z">
|
||
<meta property="article:modified_time" content="2026-08-04T10:47:21.908Z">
|
||
<meta property="article:author" content="Junv">
|
||
<meta property="article:tag" content="go">
|
||
<meta property="article:tag" content="vscode">
|
||
<meta name="twitter:card" content="summary">
|
||
<meta name="twitter:image" content="https://toozhao.com/vscode.gif">
|
||
|
||
|
||
<link rel="canonical" href="https://toozhao.com/2017/08/23/vscode-golang/">
|
||
|
||
|
||
<script class="next-config" data-name="page" type="application/json">{"sidebar":"","isHome":false,"isPost":true,"lang":"zh-CN","comments":true,"permalink":"https://toozhao.com/2017/08/23/vscode-golang/","path":"2017/08/23/vscode-golang/","title":"使用 VS Code 快速搭建你的 Golang 开发 IDE"}</script>
|
||
|
||
<script class="next-config" data-name="calendar" type="application/json">""</script>
|
||
<title>使用 VS Code 快速搭建你的 Golang 开发 IDE | 大染志</title>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/3.2.1/anime.min.js" integrity="sha256-XL2inqUJaslATFnHdJOi9GfQ60on8Wx1C2H8DYiN1xY=" crossorigin="anonymous" defer></script>
|
||
<script src="https://cdnjs.cloudflare.com/ajax/libs/medium-zoom/1.1.0/medium-zoom.min.js" integrity="sha256-ZgMyDAIYDYGxbcpJcfUnYwNevG/xi9OHKaR/8GK+jWc=" crossorigin="anonymous" defer></script>
|
||
<script src="/js/utils.js" defer></script><script src="/js/sidebar.js" defer></script><script src="/js/next-boot.js" defer></script><script src="/js/bookmark.js" defer></script>
|
||
|
||
<script src="https://cdnjs.cloudflare.com/ajax/libs/hexo-generator-searchdb/1.5.0/search.js" integrity="sha256-xFC6PJ82SL9b3WkGjFavNiA9gm5z6UBxWPiu4CYjptg=" crossorigin="anonymous" defer></script>
|
||
<script src="/js/third-party/search/local-search.js" defer></script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<style>
|
||
/* =========================================================
|
||
Toozhao blog custom styles (injected via head.njk)
|
||
阅读体验优化 — 微信读书风格
|
||
========================================================= */
|
||
html { scroll-behavior: smooth; }
|
||
|
||
/* 主内容阅读宽度 */
|
||
.post-block, .posts-expand .post-block {
|
||
max-width: 760px;
|
||
}
|
||
|
||
.post-title {
|
||
font-size: 1.7em;
|
||
font-weight: 700;
|
||
letter-spacing: 0.01em;
|
||
}
|
||
|
||
.post-meta { color: #999; font-size: 0.9em; }
|
||
|
||
.post-body {
|
||
font-size: 1.05em;
|
||
line-height: 1.9;
|
||
letter-spacing: 0.02em;
|
||
color: #333;
|
||
}
|
||
.post-body p {
|
||
margin: 1.1em 0;
|
||
text-align: justify;
|
||
text-justify: inter-ideograph;
|
||
}
|
||
.post-body h1, .post-body h2, .post-body h3, .post-body h4, .post-body h5, .post-body h6 {
|
||
line-height: 1.4;
|
||
margin-top: 1.6em;
|
||
margin-bottom: 0.8em;
|
||
font-weight: 600;
|
||
color: #222;
|
||
}
|
||
.post-body h2::before, .post-body h3::before, .post-body h4::before {
|
||
content: '';
|
||
display: inline-block;
|
||
width: 4px;
|
||
height: 0.9em;
|
||
background: #4a90d9;
|
||
border-radius: 2px;
|
||
margin-right: 10px;
|
||
vertical-align: -0.08em;
|
||
}
|
||
.post-body img {
|
||
border-radius: 8px;
|
||
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
|
||
margin: 0.6em auto;
|
||
display: block;
|
||
max-width: 100%;
|
||
}
|
||
.post-body blockquote {
|
||
border-left: 4px solid #4a90d9;
|
||
background: rgba(74, 144, 217, 0.06);
|
||
margin: 1.4em 0;
|
||
padding: 0.8em 1.2em;
|
||
border-radius: 0 8px 8px 0;
|
||
color: #555;
|
||
}
|
||
.post-body blockquote p { margin: 0.4em 0; }
|
||
.post-body a {
|
||
color: #2d6cdf;
|
||
border-bottom: 1px solid rgba(45, 108, 223, 0.3);
|
||
transition: color 0.2s, border-color 0.2s;
|
||
}
|
||
.post-body a:hover { color: #1a4fae; border-bottom-color: #1a4fae; }
|
||
.post-body code {
|
||
background: rgba(0, 0, 0, 0.05);
|
||
border-radius: 4px;
|
||
padding: 2px 6px;
|
||
font-size: 0.9em;
|
||
color: #c7254e;
|
||
}
|
||
.post-body table {
|
||
border-collapse: collapse;
|
||
margin: 1.2em auto;
|
||
font-size: 0.95em;
|
||
}
|
||
.post-body table th, .post-body table td {
|
||
border: 1px solid #ddd;
|
||
padding: 8px 14px;
|
||
}
|
||
.post-body table th { background: #f5f7fa; font-weight: 600; }
|
||
.post-body table tr:nth-child(even) { background: #fafbfc; }
|
||
.post-body ul, .post-body ol { padding-left: 1.6em; margin: 0.8em 0; }
|
||
.post-body ul li, .post-body ol li { margin: 0.35em 0; }
|
||
.post-body hr {
|
||
border: none;
|
||
border-top: 1px dashed #ccc;
|
||
margin: 2em auto;
|
||
width: 60%;
|
||
}
|
||
|
||
/* 暗色模式(跟随系统,不依赖 NexT darkmode class) */
|
||
@media (prefers-color-scheme: dark) {
|
||
body { background: #1b1f24; color: #c8cdd3; }
|
||
.post-body { color: #c8cdd3; }
|
||
.post-body h1, .post-body h2, .post-body h3, .post-body h4, .post-body h5, .post-body h6 { color: #e8eaed; }
|
||
.post-body blockquote { background: rgba(74, 144, 217, 0.1); color: #9aa5b1; }
|
||
.post-body code { background: rgba(255, 255, 255, 0.1); color: #e88388; }
|
||
.post-body table th, .post-body table td { border-color: #3a3f45; }
|
||
.post-body table th { background: #2d3238; }
|
||
.post-body table tr:nth-child(even) { background: #262a2f; }
|
||
.post-meta { color: #777; }
|
||
}
|
||
|
||
::selection { background: rgba(74, 144, 217, 0.25); }
|
||
|
||
/* 字体调节按钮 */
|
||
.font-size-control {
|
||
position: fixed;
|
||
right: 18px;
|
||
bottom: 90px;
|
||
z-index: 1000;
|
||
background: rgba(0, 0, 0, 0.65);
|
||
color: #fff;
|
||
border-radius: 20px;
|
||
padding: 6px 4px;
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 2px;
|
||
user-select: none;
|
||
}
|
||
.font-size-control button {
|
||
background: none;
|
||
border: none;
|
||
color: #fff;
|
||
font-size: 13px;
|
||
cursor: pointer;
|
||
padding: 3px 8px;
|
||
opacity: 0.85;
|
||
}
|
||
.font-size-control button:hover { opacity: 1; }
|
||
</style>
|
||
|
||
<noscript>
|
||
<link rel="stylesheet" href="/css/noscript.css">
|
||
</noscript>
|
||
</head>
|
||
|
||
<body itemscope itemtype="http://schema.org/WebPage">
|
||
<div class="headband"></div>
|
||
|
||
<main class="main">
|
||
<div class="column">
|
||
<header class="header" itemscope itemtype="http://schema.org/WPHeader"><div class="site-brand-container">
|
||
<div class="site-nav-toggle">
|
||
<div class="toggle" aria-label="切换导航栏" role="button">
|
||
<span class="toggle-line"></span>
|
||
<span class="toggle-line"></span>
|
||
<span class="toggle-line"></span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="site-meta">
|
||
|
||
<a href="/" class="brand" rel="start">
|
||
<i class="logo-line"></i>
|
||
<p class="site-title">大染志</p>
|
||
<i class="logo-line"></i>
|
||
</a>
|
||
<p class="site-subtitle" itemprop="description">Junv's blog</p>
|
||
</div>
|
||
|
||
<div class="site-nav-right">
|
||
<div class="toggle popup-trigger" aria-label="搜索" role="button">
|
||
<i class="fa fa-search fa-fw fa-lg"></i>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
<nav class="site-nav">
|
||
<ul class="main-menu menu"><li class="menu-item menu-item-home"><a href="/" rel="section"><i class="fa fa-home fa-fw"></i>首页</a></li><li class="menu-item menu-item-tags"><a href="/tags/" rel="section"><i class="fa fa-tags fa-fw"></i>标签</a></li><li class="menu-item menu-item-categories"><a href="/categories/" rel="section"><i class="fa fa-th fa-fw"></i>分类</a></li><li class="menu-item menu-item-archives"><a href="/archives/" rel="section"><i class="fa fa-archive fa-fw"></i>归档</a></li><li class="menu-item menu-item-about"><a href="/about/" rel="section"><i class="fa fa-user fa-fw"></i>关于</a></li>
|
||
<li class="menu-item menu-item-search">
|
||
<a role="button" class="popup-trigger"><i class="fa fa-search fa-fw"></i>搜索
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
|
||
|
||
|
||
<div class="search-pop-overlay">
|
||
<div class="popup search-popup">
|
||
<div class="search-header">
|
||
<span class="search-icon">
|
||
<i class="fa fa-search"></i>
|
||
</span>
|
||
<div class="search-input-container">
|
||
<input autocomplete="off" autocapitalize="off" maxlength="80"
|
||
placeholder="搜索..." spellcheck="false"
|
||
type="search" class="search-input">
|
||
</div>
|
||
<span class="popup-btn-close" role="button">
|
||
<i class="fa fa-times-circle"></i>
|
||
</span>
|
||
</div>
|
||
<div class="search-result-container">
|
||
<div class="search-result-icon">
|
||
<i class="fa fa-spinner fa-pulse fa-5x"></i>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
</header>
|
||
|
||
|
||
<aside class="sidebar">
|
||
|
||
<div class="sidebar-inner sidebar-nav-active sidebar-toc-active">
|
||
<ul class="sidebar-nav">
|
||
<li class="sidebar-nav-toc">
|
||
文章目录
|
||
</li>
|
||
<li class="sidebar-nav-overview">
|
||
站点概览
|
||
</li>
|
||
</ul>
|
||
|
||
<div class="sidebar-panel-container">
|
||
<!--noindex-->
|
||
<div class="post-toc-wrap sidebar-panel">
|
||
<div class="post-toc animated"><ol class="nav"><li class="nav-item nav-level-3"><a class="nav-link" href="#%E5%AE%89%E8%A3%85-vscode"><span class="nav-text">安装 vscode</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#%E5%AE%89%E8%A3%85-Go-%E6%8F%92%E4%BB%B6"><span class="nav-text">安装 Go 插件</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#%E5%AE%89%E8%A3%85"><span class="nav-text">安装</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#%E9%85%8D%E7%BD%AE"><span class="nav-text">配置</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#%E4%BD%BF%E7%94%A8"><span class="nav-text">使用</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#%E8%B0%83%E8%AF%95-Go%E7%A8%8B%E5%BA%8F"><span class="nav-text">调试 Go程序</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#%E5%BF%AB%E9%80%9F%E7%9A%84%E6%90%9C%E7%B4%A2"><span class="nav-text">快速的搜索</span></a></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#%E5%A6%82%E8%99%8E%E6%B7%BB%E7%BF%BC%E7%9A%84%E5%85%B6%E4%BB%96%E6%8F%92%E4%BB%B6"><span class="nav-text">如虎添翼的其他插件</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#IntelliJ-IDEA-Keybindings"><span class="nav-text">IntelliJ IDEA Keybindings</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#Code-Runner"><span class="nav-text">Code Runner</span></a></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#%E6%A6%82%E6%8B%AC"><span class="nav-text">概括</span></a></li></ol></div>
|
||
</div>
|
||
<!--/noindex-->
|
||
|
||
<div class="site-overview-wrap sidebar-panel">
|
||
<div class="site-author animated" itemprop="author" itemscope itemtype="http://schema.org/Person">
|
||
<img class="site-author-image" itemprop="image" alt="Junv"
|
||
src="/images/avatar.gif">
|
||
<p class="site-author-name" itemprop="name">Junv</p>
|
||
<div class="site-description" itemprop="description">分享编程、运维、生活与思考</div>
|
||
</div>
|
||
<div class="site-state-wrap animated">
|
||
<nav class="site-state">
|
||
<div class="site-state-item site-state-posts">
|
||
<a href="/archives/">
|
||
<span class="site-state-item-count">310</span>
|
||
<span class="site-state-item-name">日志</span>
|
||
</a>
|
||
</div>
|
||
<div class="site-state-item site-state-tags">
|
||
<a href="/tags/">
|
||
<span class="site-state-item-count">249</span>
|
||
<span class="site-state-item-name">标签</span></a>
|
||
</div>
|
||
</nav>
|
||
</div>
|
||
<div class="links-of-author animated">
|
||
<span class="links-of-author-item">
|
||
<a href="https://github.com/wahyd4" title="GitHub → https://github.com/wahyd4" rel="noopener me" target="_blank"><i class="fab fa-github fa-fw"></i>GitHub</a>
|
||
</span>
|
||
</div>
|
||
<div class="cc-license animated" itemprop="license">
|
||
<a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" class="cc-opacity" rel="noopener" target="_blank"><img src="https://cdnjs.cloudflare.com/ajax/libs/creativecommons-vocabulary/2020.11.3/assets/license_badges/small/by_nc_sa.svg" alt="Creative Commons"></a>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
</aside>
|
||
|
||
|
||
</div>
|
||
|
||
<div class="main-inner post posts-expand">
|
||
|
||
|
||
|
||
|
||
|
||
<div class="post-block">
|
||
|
||
|
||
|
||
<article itemscope itemtype="http://schema.org/Article" class="post-content" lang="zh-CN">
|
||
<link itemprop="mainEntityOfPage" href="https://toozhao.com/2017/08/23/vscode-golang/">
|
||
|
||
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
|
||
<meta itemprop="image" content="/images/avatar.gif">
|
||
<meta itemprop="name" content="Junv">
|
||
</span>
|
||
|
||
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
|
||
<meta itemprop="name" content="大染志">
|
||
<meta itemprop="description" content="分享编程、运维、生活与思考">
|
||
</span>
|
||
|
||
<span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork">
|
||
<meta itemprop="name" content="使用 VS Code 快速搭建你的 Golang 开发 IDE | 大染志">
|
||
<meta itemprop="description" content="">
|
||
</span>
|
||
<header class="post-header">
|
||
<h1 class="post-title" itemprop="name headline">
|
||
使用 VS Code 快速搭建你的 Golang 开发 IDE
|
||
</h1>
|
||
|
||
<div class="post-meta-container">
|
||
<div class="post-meta">
|
||
<span class="post-meta-item">
|
||
<span class="post-meta-item-icon">
|
||
<i class="far fa-calendar"></i>
|
||
</span>
|
||
<span class="post-meta-item-text">发表于</span>
|
||
|
||
<time title="创建时间:2017-08-23 17:26:00" itemprop="dateCreated datePublished" datetime="2017-08-23T17:26:00+10:00">2017-08-23</time>
|
||
</span>
|
||
<span class="post-meta-item">
|
||
<span class="post-meta-item-icon">
|
||
<i class="far fa-calendar-check"></i>
|
||
</span>
|
||
<span class="post-meta-item-text">更新于</span>
|
||
<time title="修改时间:2026-08-04 20:47:21" itemprop="dateModified" datetime="2026-08-04T20:47:21+10:00">2026-08-04</time>
|
||
</span>
|
||
|
||
|
||
</div>
|
||
|
||
</div>
|
||
</header>
|
||
|
||
|
||
|
||
|
||
<div class="post-body" itemprop="articleBody"><p>说到 IDE 我们想到的都是 Intellij 和 Eclipse系列这样的几百兆的桌面应用程序,它让我们编程效率得以很大提升,在日常工作中变得离不开这些软件。我们最喜欢用的 IDE 功能主要有:</p>
|
||
<ul>
|
||
<li>代码自动补全</li>
|
||
<li>代码重构</li>
|
||
<li>代码格式化</li>
|
||
<li>代码调试</li>
|
||
<li>代码高亮</li>
|
||
<li>代码错误检查</li>
|
||
<li>代码引用查询与跳转</li>
|
||
</ul>
|
||
<p>但往往 IDE 也有占用内存多,时不时反应卡顿等问题。因此很多程序员在开发一些动态语言、脚本语言的时候更倾向于选择轻量级的文本编辑器软件。如:Sublime Text、Atom 、vscode(Visual Studio Code 简称 vscode)。其实不仅仅是动态语言或者脚本语言,现在的文本编辑器已经基本包含了上述 IDE 配置的功能了,除开在<strong>代码重构</strong>方面还落后甚远之外,其他功能点已经差别不大了。<br>纵观前两年最流行文本编辑器的还是 Sublime Text,而当下最新,最火热,最好用的我认为还得属于 vscode。为什么 vscode 能够在Sublime Text 和 Atom 两位前辈面前打下一片天地?如果用一个最大的优势来描述的话:</p>
|
||
<ul>
|
||
<li>对于 Sublime Text, vscode 最大的优势是 UI 美观、功能全面,比如集成了代码调试、Git 代码变更查和更友好的插件安装功能</li>
|
||
<li>而相较于 Atom 而言,vscode 比它的同门师兄最大的优势则是快。</li>
|
||
</ul>
|
||
<p>就我自己日常开发而言,除开 Java 以外,平时编写 Ruby、JavaScript、HTML、Vue.js、Golang、Markdown、Dockerfile 等语言都在使用 vscode。</p>
|
||
<p>在这篇文章中我不会再对为什么要用 VS Code 做过多解释。而是将介绍使用 vscode 快速搭建一个优秀的 Go (Golang) 的开发环境。</p>
|
||
<h3 id="安装-vscode"><a href="#安装-vscode" class="headerlink" title="安装 vscode"></a>安装 vscode</h3><p>说了 vscode 这么多好,如果你还不知道 vscode 是何物的话,这里简单介绍下。vscode 是微软基于 Electron 框架开发的跨平台的开源的文本编辑器。也许你曾用过它的兄弟 Visual Studio,被它的庞大和臃肿吓到,在这里却不用担心。vscode 是一个全新的项目,旨在打造一个轻量级、面向 Web 开发、稳定高效的开发平台。</p>
|
||
<p>你可以通过 <a target="_blank" rel="noopener" href="https://code.visualstudio.com/">https://code.visualstudio.com</a> 官网下载安装 vscode软件</p>
|
||
<h3 id="安装-Go-插件"><a href="#安装-Go-插件" class="headerlink" title="安装 Go 插件"></a>安装 Go 插件</h3><h4 id="安装"><a href="#安装" class="headerlink" title="安装"></a>安装</h4><p>vscode 之所以强大,其中很大一点便是因为它拥有庞大的插件对各个语言提供相关的功能。而对于 Go,官方提供了强大的插件 <a target="_blank" rel="noopener" href="https://marketplace.visualstudio.com/items?itemName=lukehoban.Go">Go</a>。你可以直接通过在插件页面,输入搜索 Go 进行安装相关插件,安装之后对 vscode 进行重启。该插件对 Golang 支持非常丰富的功能:</p>
|
||
<ul>
|
||
<li>代码格式化</li>
|
||
<li>保存时代码自动格式化</li>
|
||
<li>自动添加 Imports</li>
|
||
<li>代码错误提示</li>
|
||
<li>引用查询与跳转到定义位置</li>
|
||
<li>Go 代码元素搜索</li>
|
||
<li>文档查看</li>
|
||
<li>支持代码调试等等功能。</li>
|
||
</ul>
|
||
<p>这些可以功能可以很好的满足我们日常开发所需。</p>
|
||
<h4 id="配置"><a href="#配置" class="headerlink" title="配置"></a>配置</h4><p>Go 插件提供丰富的配置项,让我们对插件的默认行为进行调整,以便最大限度的适合每个人。<br>依次键入<code>F1</code> -> <code>Open User Settings</code> 即可打开vscode 用户配置文件,在文件末尾可以添加类似如下属性。</p>
|
||
<figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">"go.buildOnSave"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">//在保存代码时自动编译代码</span></span><br><span class="line"><span class="attr">"go.lintOnSave"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">//在保存代码时自动检查代码可以优化的地方,并给出建议</span></span><br><span class="line"><span class="attr">"go.vetOnSave"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">//在保存代码时自动检查潜在的错误</span></span><br><span class="line"><span class="attr">"go.buildTags"</span><span class="punctuation">:</span> <span class="string">""</span><span class="punctuation">,</span></span><br><span class="line"><span class="attr">"go.buildFlags"</span><span class="punctuation">:</span> <span class="punctuation">[</span><span class="punctuation">]</span><span class="punctuation">,</span></span><br><span class="line"><span class="attr">"go.lintTool"</span><span class="punctuation">:</span> <span class="string">"golint"</span><span class="punctuation">,</span> <span class="comment">//使用 golint 库来执行 lint操作,你也可以选择使用gometalinter</span></span><br><span class="line"><span class="attr">"go.lintFlags"</span><span class="punctuation">:</span> <span class="punctuation">[</span><span class="punctuation">]</span><span class="punctuation">,</span></span><br><span class="line"><span class="attr">"go.vetFlags"</span><span class="punctuation">:</span> <span class="punctuation">[</span><span class="punctuation">]</span><span class="punctuation">,</span></span><br><span class="line"><span class="attr">"go.coverOnSave"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">false</span></span><span class="punctuation">,</span> <span class="comment">//在保存代码时执行测试,并显示测试覆盖率</span></span><br><span class="line"><span class="attr">"go.useCodeSnippetsOnFunctionSuggest"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">//使用代码片段作为提示</span></span><br><span class="line"><span class="attr">"go.formatOnSave"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">//在保存代码时自动格式化代码</span></span><br><span class="line"><span class="attr">"go.formatTool"</span><span class="punctuation">:</span> <span class="string">"goimports"</span><span class="punctuation">,</span> <span class="comment">//使用 goimports 工具进行代码格式化,或者使用 goreturns和gofmt</span></span><br><span class="line"><span class="attr">"go.formatFlags"</span><span class="punctuation">:</span> <span class="punctuation">[</span><span class="punctuation">]</span><span class="punctuation">,</span></span><br><span class="line"><span class="attr">"go.gocodeAutoBuild"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">//代码自动编译构建</span></span><br><span class="line"><span class="attr">"go.goroot"</span><span class="punctuation">:</span> <span class="string">"/usr/local/Cellar/go/1.8.3/libexec"</span><span class="punctuation">,</span> <span class="comment">//设置 goroot,正常编译 go 代码。</span></span><br><span class="line"><span class="attr">"go.gopath"</span><span class="punctuation">:</span> <span class="string">"/Users/junv/gocode:/Users/junv/mygocode"</span><span class="punctuation">,</span> <span class="comment">// 设置 gopath,有利于自动导入库</span></span><br></pre></td></tr></table></figure>
|
||
|
||
<h4 id="使用"><a href="#使用" class="headerlink" title="使用"></a>使用</h4><p><img src="/vscode.gif" alt="使用"></p>
|
||
<h4 id="调试-Go程序"><a href="#调试-Go程序" class="headerlink" title="调试 Go程序"></a>调试 Go程序</h4><p>打开 go 源码,在你期望调试的行号左侧,点击即可添加断点。<br>当你第一次进行调试时,vscode 则要求你添加调试程序的相关配置。可以输入类似下图的配置即可。</p>
|
||
<figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">{</span></span><br><span class="line"> <span class="attr">"version"</span><span class="punctuation">:</span> <span class="string">"0.2.0"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"configurations"</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line"> <span class="punctuation">{</span></span><br><span class="line"> <span class="attr">"name"</span><span class="punctuation">:</span> <span class="string">"monitor-api"</span><span class="punctuation">,</span> <span class="comment">//程序名字</span></span><br><span class="line"> <span class="attr">"type"</span><span class="punctuation">:</span> <span class="string">"go"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"request"</span><span class="punctuation">:</span> <span class="string">"launch"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"mode"</span><span class="punctuation">:</span> <span class="string">"debug"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"remotePath"</span><span class="punctuation">:</span> <span class="string">""</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"port"</span><span class="punctuation">:</span> <span class="number">1234</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"host"</span><span class="punctuation">:</span> <span class="string">"127.0.0.1"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"program"</span><span class="punctuation">:</span> <span class="string">"${workspaceRoot}"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"env"</span><span class="punctuation">:</span> <span class="punctuation">{</span></span><br><span class="line"> <span class="attr">"QUICKPAY_ENV"</span><span class="punctuation">:</span> <span class="string">"testing"</span> <span class="comment">//注入你需要的环境变量</span></span><br><span class="line"> <span class="punctuation">}</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"args"</span><span class="punctuation">:</span> <span class="punctuation">[</span><span class="punctuation">]</span></span><br><span class="line"> <span class="punctuation">}</span></span><br><span class="line"> <span class="punctuation">]</span></span><br><span class="line"><span class="punctuation">}</span></span><br></pre></td></tr></table></figure>
|
||
|
||
<p>点击开始按钮,即可进行Go 程序调试了。</p>
|
||
<p><img src="//debug.png" alt="debug"></p>
|
||
<h4 id="快速的搜索"><a href="#快速的搜索" class="headerlink" title="快速的搜索"></a>快速的搜索</h4><p>当项目源代码越来越多,依赖的第三方库也越来越多的时候,你会发现 vscode的搜索功能 变慢了,而且很多时候我们并不希望搜索结果中包含 vendor (第三方依赖源代码)目录下的代码。<br>那么你可以尝试在<code>User Settings</code> 中添加如下的配置:</p>
|
||
<figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">"search.exclude"</span><span class="punctuation">:</span> <span class="punctuation">{</span></span><br><span class="line"> <span class="attr">"**/node_modules"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"**/bower_components"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"**/vendor"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span> <span class="comment">//排除 vendor 目录</span></span><br><span class="line"><span class="punctuation">}</span><span class="punctuation">,</span></span><br></pre></td></tr></table></figure>
|
||
|
||
<p>这样 vscode 在执行搜索的时候就会跳过 vendor 目录下的文件,让搜索保持高效。</p>
|
||
<h3 id="如虎添翼的其他插件"><a href="#如虎添翼的其他插件" class="headerlink" title="如虎添翼的其他插件"></a>如虎添翼的其他插件</h3><h4 id="IntelliJ-IDEA-Keybindings"><a href="#IntelliJ-IDEA-Keybindings" class="headerlink" title="IntelliJ IDEA Keybindings"></a>IntelliJ IDEA Keybindings</h4><p>如果你和我一样也是从 Intellij 系列 IDE 迁移过来,想必你也遇到快捷键不习惯的问题。推荐你安装<a target="_blank" rel="noopener" href="https://marketplace.visualstudio.com/items?itemName=k--kato.intellij-idea-keybindings">IntelliJ IDEA Keybindings</a> 插件。来映射快捷键,让你在 vscode 可以使用使用 Intellij 的快捷键。<br>如:</p>
|
||
<ul>
|
||
<li><code>alt</code> + <code>F7</code> 查看方法引用</li>
|
||
<li><code>ctrl</code> + <code>shift</code> + <code>↑</code> 或者 <code>ctrl</code> + <code>shift</code> + <code>↓</code> 移动行</li>
|
||
<li><code>cmd</code> + <code>F4</code> 关闭当前窗口</li>
|
||
<li><code>alt</code> + <code>cmd</code>+ <code>→</code> 或者 <code>alt</code> + <code>cmd</code>+ <code>←</code> 切换到前/后一次操作的鼠标位置了</li>
|
||
</ul>
|
||
<p>更多的快捷键映射,可以查看该插件主页。</p>
|
||
<h4 id="Code-Runner"><a href="#Code-Runner" class="headerlink" title="Code Runner"></a>Code Runner</h4><p><a target="_blank" rel="noopener" href="https://marketplace.visualstudio.com/items?itemName=formulahendry.code-runner">Code Runner</a> 插件,让你可以快速你运行各种语言的代码片段。</p>
|
||
<p>在可运行的 go 文件页面,点击界面右上角的<code>➤</code> 即可快速运行该文件。</p>
|
||
<p><img src="/code-runner.png" alt="code runner"></p>
|
||
<h3 id="概括"><a href="#概括" class="headerlink" title="概括"></a>概括</h3><p>通过本篇文章可以看出,依赖于vscode 强大的插件我们可以快速搭建完善的 Go 语言开发环境。而它相较于 IDE 的最大优势则是性能良好、扩展性强、免费和轻量级。</p>
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
<footer class="post-footer">
|
||
|
||
|
||
<div class="post-copyright">
|
||
<ul>
|
||
<li class="post-copyright-author">
|
||
<strong>本文作者: </strong>Junv
|
||
</li>
|
||
<li class="post-copyright-link">
|
||
<strong>本文链接:</strong>
|
||
<a href="https://toozhao.com/2017/08/23/vscode-golang/" title="使用 VS Code 快速搭建你的 Golang 开发 IDE">https://toozhao.com/2017/08/23/vscode-golang/</a>
|
||
</li>
|
||
<li class="post-copyright-license">
|
||
<strong>版权声明: </strong>本博客所有文章除特别声明外,均采用 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" rel="noopener" target="_blank"><i class="fab fa-fw fa-creative-commons"></i>BY-NC-SA</a> 许可协议。转载请注明出处!
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="post-tags">
|
||
<a href="/tags/go/" rel="tag"># go</a>
|
||
<a href="/tags/vscode/" rel="tag"># vscode</a>
|
||
</div>
|
||
|
||
|
||
|
||
<div class="post-nav">
|
||
<div class="post-nav-item">
|
||
<a href="/2016/10/17/easiest-way-to-use-go/" rel="prev" title="开发Go项目最简单的方式 — 一个基于Docker的go 工具">
|
||
<i class="fa fa-angle-left"></i> 开发Go项目最简单的方式 — 一个基于Docker的go 工具
|
||
</a>
|
||
</div>
|
||
<div class="post-nav-item">
|
||
<a href="/2017/09/19/caddy/" rel="next" title="快速上手更简单的 Web 服务器 —— Caddy">
|
||
快速上手更简单的 Web 服务器 —— Caddy <i class="fa fa-angle-right"></i>
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</footer>
|
||
</article>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</div>
|
||
</main>
|
||
|
||
<footer class="footer">
|
||
<div class="footer-inner">
|
||
|
||
<div class="copyright">
|
||
© 2012 –
|
||
<span itemprop="copyrightYear">2026</span>
|
||
<span class="with-love">
|
||
<i class="fa fa-heart"></i>
|
||
</span>
|
||
<span class="author" itemprop="copyrightHolder">Junv</span>
|
||
</div>
|
||
<div class="powered-by">由 <a href="https://hexo.io/" rel="noopener" target="_blank">Hexo</a> & <a href="https://theme-next.js.org/muse/" rel="noopener" target="_blank">NexT.Muse</a> 强力驱动
|
||
</div>
|
||
|
||
</div>
|
||
</footer>
|
||
|
||
|
||
<div class="toggle sidebar-toggle" role="button">
|
||
<span class="toggle-line"></span>
|
||
<span class="toggle-line"></span>
|
||
<span class="toggle-line"></span>
|
||
</div>
|
||
<div class="sidebar-dimmer"></div>
|
||
<div class="back-to-top" role="button" aria-label="返回顶部">
|
||
<i class="fa fa-arrow-up fa-lg"></i>
|
||
<span>0%</span>
|
||
</div>
|
||
<div class="reading-progress-bar"></div>
|
||
<a role="button" class="book-mark-link book-mark-link-fixed"></a>
|
||
|
||
<noscript>
|
||
<div class="noscript-warning">Theme NexT works best with JavaScript enabled</div>
|
||
</noscript>
|
||
<script>
|
||
/* 字号调节 A- / A / A+(阅读体验) */
|
||
(function () {
|
||
'use strict';
|
||
function initFontSize() {
|
||
var postBody = document.querySelector('.post-body');
|
||
if (!postBody || document.getElementById('font-size-control')) return;
|
||
var bar = document.createElement('div');
|
||
bar.id = 'font-size-control';
|
||
bar.className = 'font-size-control';
|
||
var labels = [['A-', -1], ['A', 0], ['A+', 1]];
|
||
var current = 1.0;
|
||
labels.forEach(function (item) {
|
||
var btn = document.createElement('button');
|
||
btn.textContent = item[0];
|
||
btn.title = item[0] === 'A-' ? '减小字号' : item[0] === 'A+' ? '增大字号' : '恢复默认';
|
||
btn.addEventListener('click', function () {
|
||
if (item[1] === 0) current = 1.0;
|
||
else current = Math.min(1.4, Math.max(0.8, current + item[1] * 0.1));
|
||
postBody.style.fontSize = current + 'em';
|
||
});
|
||
bar.appendChild(btn);
|
||
});
|
||
document.body.appendChild(bar);
|
||
}
|
||
if (document.readyState === 'loading') {
|
||
document.addEventListener('DOMContentLoaded', initFontSize);
|
||
} else {
|
||
initFontSize();
|
||
}
|
||
})();
|
||
</script>
|
||
|
||
</body>
|
||
</html>
|