Go入门教程

2023-11-03

什么是Go语言?

        Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。可以Linux、Mac、Windows。

Go语言的用途?

  1. 服务端开发:以前你使用C或者C++做的那些事情,用Go来做很合适,例如日志处理、文件系统、监控系统等;
  2. DevOps:运维生态中的Docker、K8s、prometheus、grafana、open-falcon等都是使用Go语言开发;
  3. 网络编程:大量优秀的Web框架如Echo、Gin、Iris、beego等,而且Go内置的 net/http包十分的优秀;
  4. Paas云平台领域:Kubernetes和Docker Swarm等;
  5. 分布式存储领域:etcd、Groupcache、TiDB、Cockroachdb、Influxdb等;
  6. 区块链领域:区块链里面有两个明星项目以太坊和fabric都使用Go语言;
  7. 容器虚拟化:大名鼎鼎的Docker就是使用Go语言实现的;
  8. 爬虫及大数据:Go语言天生支持并发,所以十分适合编写分布式爬虫及大数据处理。

Go语言安装?

        Go语言安装包官方下载地址:https://golang.org/dl/,如果打不开或下载太慢,换成中国区下载地址:https://golang.google.cn/dl/

注意:安装目录不可以有中文。然后配置系统环境变量,添加GOROOT,值为Go的安装目录,例如D:\Program Files\Go(安装时默认勾选安装)。然后可以在cmd里执行go version,如果出现类似输出:go version go1.19.1 windows/amd64,说明安装配置成功,接下来就可以进行开发运行Go程序了。

Go语言开发工具安装?

        Go语言开发工具有:GoLand,VsCode,LiteIDE,Eclipse等。本篇介绍VsCode安装,因为VsCode使用广泛,可以开发编译多种语言。

VsCode官网地址:https://code.visualstudio.com/

点击下载VsCode稳定版即可,如果下载太慢,可以将下载链接中az764295.vo.msecnd.net替换成vscode.cdn.azure.cn,速度蹭蹭提上来。

VsCode界面改成中文显示?

        在VsCode的扩展搜索框输入chinese,找到中文语言安装包,点击"install"进行安装,安装完成后点击"Change Language and Restart",VsCode重启后显示中文界面。

Vscode安装Go支持扩展:VsCode的扩展搜索框输入Go,找到Go扩展,点击"install"进行安装

VsCode编写第一个Go程序?

新建文件,选择Go语言,编写一个简单的Go程序,如下:

package main
import "fmt"
func main() {
    fmt.Println("Hello, World!")
}

如果出现下面的错误提示,点击安装后还是报错,则需要代码,在VsCode终端输入以下两个命令:

$ go env -w GO111MODULE=on
$ go env -w GOPROXY=https://goproxy.io,direct

如果提示一下提示,则在终端输入命令:go env -w GO111MODULE=auto

再次点击运行--以非调试模式运行,成功运行!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Go入门教程 的相关文章

  • 如何在golang中创建一个充满“000000...”数据的10MB文件?

    我打算在日志或磁盘队列等系统中使用 fdatasync 首先是在 ext4 等文件系统中创建一个带有 000000 的 10MB 文件 但我不知道如何正确地做到这一点 jnml fsc r630 src tmp SO 16797380 ls
  • 如何在golang中解析JSON而不需要解组两次

    我有一个 Web 套接字连接 它在 JSON 对象中发送不同类型的消息 并且我想将内容解组到一些已知的结构中 为此 我认为我应该执行以下操作 步骤 1 将 JSON 解组为通用映射 字符串 接口 步骤 2 找到我要找的钥匙 步骤 3 尝试将
  • “go.tools”的权限被拒绝错误

    当我尝试安装 go 工具时 我的权限被拒绝 usr local go pkg tool linux amd64 cover 我可以接受 因为它是 usr local 目录及需求root使用权 但我的第一个疑问是为什么当我设置时它试图安装在这
  • 为什么 json.Unmarshal 返回映射而不是预期的结构?

    看看这个游乐场 http play golang org p dWku6SPqj5 http play golang org p dWku6SPqj5 基本上 我正在工作的图书馆收到了interface 作为参数 然后需要json Unma
  • 在 Visual Studio Code 中调试 Go 测试

    在我的 Windows 计算机上 我安装了 Visual Studio Code 要手动运行测试 我进入控制台到项目文件夹并输入 go test main test go 它工作完美 但我遇到一种情况 我需要调试我的测试以了解发生了什么 为
  • 如何使用 GOPATH 的 Samba 服务器位置?

    我正在尝试将 GOPATH 设置为共享网络文件夹 当我进入 export GOPATH smb path to shared folder I get go GOPATH entry is relative must be absolute
  • 在 Go to 函数中通过引用和值传递

    我对 Go 中通过引用和值传递有点困惑 我已经看到过对类型前面的 的解释 在类型名称前面 表示声明的变量将存储该类型的另一个变量的地址 而不是该类型的值 类型 这对我来说毫无意义 在Java中 如果我将数据库实例传递给函数 我会这样做 da
  • 在 Golang 中运行外部 python,捕获连续的 exec.Command Stdout

    所以我的 go 脚本将像这样调用外部 python cmd exec Command python game py cmd Stdout os Stdout cmd Stderr os Stderr go func err cmd Run
  • 单值上下文中的多值错误

    我在编译 GO 代码时遇到此错误 multiple value fmt Println in single value context 我正在尝试创建一个函数 该函数接受可变数量的整数并将每个变量打印在一行上 GO package main
  • GoLang 中的 HTML 部分

    我刚刚开始使用 Go 我想用它创建一个网络应用程序 我现在尝试的是以handlebarsjs 式的方式使用模板 我想将页眉和页脚从主页中取出 以便可以将它们注入到每个网页上 我当前的设置应该是解析主页 页眉和页脚 HTML 文件并缓存它们
  • 将产生 goroutine 的 golang 方法

    据我所知 如果 goroutine 太忙 它们会阻止其他 goroutine 运行 对我来说 这意味着我的应用程序的性能和响应能力可能取决于我知道哪些库方法将控制其他 goroutine 例如通常是 Read 和 Write 有什么方法可以
  • 当使用 k8s.io/client-go 库的 kubernetes 部署发生更改时获得通知的最佳方式是什么?

    Context 我正在编写一个使用k8s io client go https github com kubernetes client go 图书馆 这里是 godocs https godoc org k8s io client go
  • 关闭长度未知的通道

    当不了解频道时我无法关闭频道 length package main import fmt time func gen ch chan int var i int for time Sleep time Millisecond 10 ch
  • container_memory_working_set_bytes 与 process_resident_memory_bytes 和total_rss 之间的关系

    我希望了解以下关系 容器内存工作集字节 vs 进程驻留内存字节 vs 总计RSS 容器内存 rss 文件映射以便更好地配备OOM可能性警报系统 这似乎违背了我的理解 这让我现在感到困惑 如果容器 pod 运行单个进程 执行用 Go 编写的编
  • 我们如何在 Go 中使用通道来代替互斥锁?

    通道将通信 值的交换 与同步相结合 保证两个计算 goroutine 处于已知状态 如何使用 Google Go 中的通道来执行互斥量的功能 package main import sync var global int 0 var m s
  • Golang const unsafe.Sizeof

    不明白为什么我可以做到 const OK uint64 0 const OK int unsafe Sizeof uint64 0 但不是这个 const NOK binary Size uint64 0 它的解释在规格 https gol
  • 如何读取 UDP 连接直至超时?

    我需要读取 UDP 流量 直到超时 我可以通过在 UDPConn 上调用 SetDeadline 并循环直到出现 I O 超时错误来做到这一点 但这看起来很黑客 基于错误条件的流量控制 下面的代码片段看起来更正确 但并没有终止 在生产中 这
  • 如何在golang中获得两个切片的交集?

    Go 中有没有有效的方法来获取两个切片的交集 我想避免嵌套 for 循环之类的解决方案slice1 string foo bar hello slice2 string foo bar intersection slice1 slice2
  • 共享 GOPATH 的良好做法是什么?

    我刚刚开始学习 Go 并阅读现有代码以了解 其他人是如何做的 在这样做时 go 工作空间 的使用 特别是当它与项目的依赖项相关时 似乎无处不在 在处理各种 Go 项目时 使用单个或多个 Go 工作区 即 GOPATH 的定义 的常见最佳实践
  • 使用生成的 Golang DLL 返回字符串或 *C.Char

    我一直在努力追随z505 goDLL https github com z505 goDLL回购并遇到了一个大问题 该方法无法返回字符串 我无法读取结果的输出变量 这是我到目前为止使用的代码 Go 完整代码https play golang

随机推荐

  • 《网络设备安装与管理》实训2(配置二层交换机、三层交换机)

    网络设备安装与管理 实训2 一 实习项目 配置交换机 包括二层交换机 三层交换机 实现不同VLAN之间的通讯 二 实习目的 1 理解多层交换机的路由原理 实现不同VLAN间通讯 采用三层交换机以及路由器设备来解决 在三层交换机上 创建各个V
  • python绘制好几个子图_python – 在matplotlib中绘制一条关联多个子图之间区域的线...

    我是一名地质学家 有一堆不同深度的钻孔 我粗略地设定了子图的数量 宽度和高度 以根据钻孔的数量和这些钻孔中的样本数量而变化 在每个钻孔中都有一个我想要突出显示的区域 我用axhspan完成了这个区域 我想做的是在钻孔 子图 之间进行关联 绘
  • SpringBoot下的定时任务调度@Scheduled,Java原生定时任务

    SpringBoot下的定时任务调度 Scheduled Java原生定时任务 一 概述 定时任务调度 一句话概括就是 基于给定的时间点 给定的时间间隔 自动执行的任务 方法 二 java生态下的定时任务实现方式 Spring 3 0以后自
  • 二分查找法

    include using namespace std include int main vector v1 1 3 4 6 10 13 14 15 17 21 容器v1 int target cin gt gt target int lo
  • 教妹学Java(十二):一文搞懂Java的所有关键字

    大家好 我是沉默王二 一个和黄家驹一样身高 和刘德华一样颜值的程序员 本篇文章通过我和三妹对话的形式来谈一谈 Java 中的关键字 教妹学 Java 没见过这么有趣的标题吧 语不惊人死不休 没错 本篇文章的标题就是这么酷炫 接受不了的同学就
  • 腾讯云服务器Ubuntu、Centos7配置为代理服务器,使用tinyproxy

    1 安装tinyproxy 1 1Ubuntu系统 apt get install tinyproxy 1 2Centos7系统 yum y install tinyproxy 2 修改tinyproxy配置 vi etc tinyprox
  • vue项目打包发布与dist瘦身

    提示 学习笔记 文章目录 前言 一 打包发布 概念介绍 目标 讲解 小结 二 打包发布 publicPath 目标 讲解 小结 三 打包发布 减少包体积 整体分析 目标 讲解 小结 四 打包发布 减少包体积 排除第三方 目标 讲解 小结 五
  • mxnet的C/C++接口编译

    mxnet的C C 接口编译 Python的版本的mxnet版本用来训练 验证及测试算法效果还比较方便 但是实际部署则需要C C 接口 因此需要编译相应接口以方便部署 一 编译环境之windows10 编译出动态库libmxnet dll
  • redis相关原理及面试官由浅到深必问的15大问题(高级)

    0 redis是什么 redis是nosql 也是个巨大的map 单线程 但是可处理1秒10w的并发 数据都在内存中 使用java对redis进行操作类似jdbc接口标准对mysql 有各类实现他的实现类 我们常用的是druid 其中对re
  • Jenkins自动化部署框架(一)邮箱设置和git介绍

    下载安装完成后 填写密码 安装推荐插件 新建管理员账户 开始使用 系统设置配置邮箱参数 选择一个项目 配置 构建后操作 Git介绍 特点 1 Git是分布式管理 服务器和客户端都有版本控制能力 都能进行代码的提交 合并 2 Git会在根目录
  • nginx部署vue项目刷新404

    测试3 location root usr local openresty nginx html test3 index index html index htm try files uri uri index html 解决页面刷新404
  • IT项目管理——07.项目成本管理

    作业1 作业2 作业3 a 成本偏差CV EV AC 10000 进度偏差SV EV PV 20000 成本绩效指数CPI EV AC 1 11 进度绩效指数SPI EV PV 0 83 b 进度绩效指数小于1 落后于进度 正的成本偏差 完
  • 04JVM_语法糖

    一 编译期处理 语法糖java编译器把 java源码编译为 class字节码的过程中 自动生成和转换的一些代码 添加的class字节码 减轻程序员的负担 1 默认构造器 默认构造器没有写任何的构造方法 但经过编译器编译成字节码过程中 会加上
  • 图像采样方法

    最邻近插值 Nearest Neighbour Resampling 这种插值方法根据源图像和目标图像之间的相对位置来将目标图像上像素确定为相对源图像上相对位置的像素值 对于任意一幅源图像来说 假设放大后目标图像的宽为Dw高为Dh 任意目标
  • 计算机网络——应用层の选择题整理

    网络应用模型 1 下面关于客户 服务器模型的描述 存在错误 a 客户端必须提前知道服务器的地址 而服务器不需要提前知道客户端的地址 b 客户端主要实现如何显示信息与收集用户的输入 而服务端主要实现数据的处理 c 浏览器显示的内容来自服务器
  • Tensorflow深度学习之二十:CIFAR-10数据集介绍

    一 CIFAR 10 CIFAR 10数据集由10类32x32的彩色图片组成 一共包含60000张图片 每一类包含6000图片 其中50000张图片作为训练集 10000张图片作为测试集 CIFAR 10数据集被划分成了5个训练的batch
  • matlab神经网络Narxnet非线性自回归神经网络

    Narxnet 非线性自回归神经网络 用法 narxnet inputDelays feedbackDelays hiddenSizes trainFcn inputDelays 输入延时 Row vector of increasing
  • 统计学习方法- 感知机

    感知机是二分类的线性分类模型 其输入为实例的特征向量 输出为实例的类别 取 1和 1二值 1 感知模型 定义 2 感知机学习策略 数据集的线性可分性 感知机学习策略是假设空间中选取使损失函数最小的模型参数w b即感知模型 3 感知机学习算法
  • android activity 切换流程

    一般来说 Android程序主压迫由下列4部分组成 Activity Broadcast Intent Receiver Service Content Provider 本文重点讲解Activity这部分内容 1 Activity基本介绍
  • Go入门教程

    什么是Go语言 Go 又称 Golang 是 Google 的 Robert Griesemer Rob Pike 及 Ken Thompson 开发的一种静态强类型 编译型语言 Go 语言语法与 C 相近 但功能上有 内存安全 GC 垃圾