Hello World!1分钟配置好你的Go环境

news2024/11/24 19:24:41

目录

    • 一、简介
      • 为什么选择Golang?
      • Golang与其他语言的对比
      • 核心特性
      • 应用场景
      • 社区和生态系统
      • 性能标准
      • 企业级应用
    • 二、环境要求
      • 操作系统
        • Windows
        • Linux/Unix
        • macOS
      • 硬件需求
      • 其他依赖软件
      • 异常情况和处理方法
    • 三、下载和安装Golang
      • Windows系统
        • 使用官方安装包
        • 使用Chocolatey(包管理器)
        • 异常处理
      • Linux/Unix系统
        • 使用包管理器
        • 使用tarball
        • 异常处理
      • macOS系统
        • 使用Homebrew
        • 使用官方安装包
        • 异常处理
      • 环境变量设置
    • 四、配置环境变量
      • Windows系统
        • 方法一:使用图形界面
        • 方法二:使用命令行
      • Linux/Unix系统
      • macOS系统
      • 异常情况和解决办法
    • 五、验证安装
      • Windows系统
      • Linux/Unix系统
      • macOS系统
      • 异常处理
      • 进一步验证
    • 六、第一个Go程序:Hello World
      • 基础实现
      • 使用变量
      • 使用函数
      • 使用多个文件
      • 异常情况和解决办法
    • 七、总结
      • 回顾关键步骤
      • 技术深度和细节

在这篇文章中,我们从头到尾一步步指导你配置Golang开发环境,并编写你的第一个"Hello, World!"程序。我们详细解释了在多种操作系统(包括Windows、Linux和macOS)下的安装过程、环境变量设置以及如何验证安装是否成功。我们还提供了多种编写"Hello, World!"程序的实现方式,包括使用变量、函数和多文件架构。无论你是Go的新手还是有一定经验的开发者,这篇文章都能提供全面而深入的指导,帮助你快速上手Go语言。

关注TechLeadCloud,分享互联网架构、云服务技术的全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。

file

一、简介

file
当谈到构建高性能、可扩展的网络应用程序或微服务时,Golang(也称为Go)是一个不能忽视的选择。它是由Google的Robert Griesemer、Rob Pike和Ken Thompson于2009年设计的,旨在解决多核处理器、网络系统、大型代码库的现代计算问题。

为什么选择Golang?

以下是几个选择Golang的重要理由:

  1. 并发原生支持:Go通过goroutines和channels为并发编程提供了一流的支持,这样可以更简单地构建高并发系统。
  2. 内存安全:静态类型和垃圾回收功能减少了程序出错的可能性。
  3. 高性能:Go语言接近低级语言的速度,但提供了高级语言的便利性。
  4. 云原生:在容器化和微服务架构方面,Go表现出色,这得益于其出色的网络库和轻量级的执行模型。

Golang与其他语言的对比

  • Java: 虽然Java有一个庞大的生态系统,但Go在启动时间、内存占用和并发模型方面更有优势。
  • Python: Go比Python执行速度更快,但Python在数据分析和机器学习领域更为成熟。
  • Rust: Rust提供更高的内存安全性,但Go在开发速度和并发处理方面更优秀。

核心特性

  • 静态类型:提供编译时类型检查。
  • 简洁的语法:相比于C++或Java,Go有更少的关键字和更简洁的语法。
  • 标准库:提供丰富的标准库,涵盖了网络编程、数据操作、文件处理等。

应用场景

  • Web后端: 如Docker和Kubernetes等都是用Go编写的。
  • 网络服务: 包括API服务,数据抓取等。
  • 数据处理: 流处理,批处理等。

社区和生态系统

Go有一个活跃的开发者社区和丰富的第三方库,如Gin用于web开发,gRPC用于RPC通信。

性能标准

Go在几乎所有的性能测试中都表现得相当出色,特别是在并发和垃圾回收方面。

企业级应用

许多大型公司如Google、Uber和Netflix都在使用Go进行生产部署。


二、环境要求

file
在开始Golang编程之前,了解和满足相应的环境要求是非常重要的。下面,我们将分别探讨不同操作系统和硬件平台的环境要求,并介绍一些常见的异常情况及其处理方法。

操作系统

Windows
  • 版本: Windows 7 或更高
  • 架构: x64
  • 异常处理: 如果你使用Windows 7,并遇到安全警告,确保你的系统已经安装了最新的安全补丁。
Linux/Unix
  • 版本: Ubuntu 18.04+, CentOS 7+, Fedora, Debian
  • 架构: x64, armv6l, armv7l, arm64, s390x, ppc64le
  • 异常处理: 依赖库问题通常可以通过包管理器解决。例如,在Ubuntu下运行 sudo apt-get update && sudo apt-get upgrade
macOS
  • 版本: macOS 10.12 Sierra 或更高
  • 架构: x64
  • 异常处理: 如果你遇到权限问题,尝试使用 sudo 运行命令。

硬件需求

  • 处理器: 1 GHz或更快的处理器
  • 内存: 最少需要512 MB
  • 磁盘空间: 最少需要2 GB

其他依赖软件

  • Git: 版本控制(可选但推荐)
  • C/C++ 编译器: 一些Go包可能需要C/C++编译器进行本地编译。

异常情况和处理方法

  1. 环境变量冲突: 确保没有其他Go版本的环境变量影响当前安装。

    • 解决方案: 清理冲突的环境变量,重新设置。
  2. 磁盘空间不足: 安装过程中可能会出现磁盘空间不足的问题。

    • 解决方案: 清理不必要的文件和应用程序,释放磁盘空间。
  3. 网络问题: 在下载Go或Go包时可能会遇到网络问题。

    • 解决方案: 确认网络连接,或尝试更换网络环境。
  4. 依赖冲突: 当使用第三方库或包时,可能会出现依赖冲突。

    • 解决方案: 使用 go mod tidy 来清理和解决依赖问题。
  5. 权限问题: 在某些操作系统中,您可能需要管理员权限来安装Go或运行某些Go程序。

    • 解决方案: 使用管理员权限运行,或更改文件/文件夹权限。

三、下载和安装Golang

file
下载和安装Go语言环境是开始Golang编程旅程的第一步。这个过程根据你的操作系统和偏好有多种方式。以下是针对不同操作系统的详细步骤。

Windows系统

使用官方安装包
  1. 前往Go的官方下载页面:Go Downloads
  2. 选择适合你的Windows版本(如:go1.xx.windows-amd64.msi)的安装包。
  3. 下载后,双击.msi文件,按照安装向导进行安装。
使用Chocolatey(包管理器)

如果你已经安装了Chocolatey,你可以使用以下命令来安装Go:

choco install golang
异常处理
  • 如果安装过程中出现错误,请确保你具有管理员权限。
  • 确保环境变量PATH已经正确设置。

Linux/Unix系统

使用包管理器
  • Ubuntu/Debian

    sudo apt update
    sudo apt install golang
    
  • Fedora

    sudo dnf install golang
    
  • CentOS/RHEL

    sudo yum install golang
    
使用tarball
  1. 前往Go的官方下载页面:Go Downloads

  2. 下载适用于你的Linux版本的tarball包(如:go1.xx.linux-amd64.tar.gz)。

  3. 解压tarball包到 /usr/local 目录:

    sudo tar -C /usr/local -xzf go1.xx.linux-amd64.tar.gz
    
异常处理
  • 确保$GOROOT$GOPATH环境变量已经设置。
  • 如有权限问题,使用sudo

macOS系统

使用Homebrew

如果你已经安装了Homebrew,使用以下命令安装Go:

brew install go
使用官方安装包
  1. 前往Go的官方下载页面:Go Downloads
  2. 下载适用于macOS的安装包(如:go1.xx.darwin-amd64.pkg)。
  3. 双击.pkg文件并按照指引完成安装。
异常处理
  • 确保环境变量已经设置。
  • 如果遇到权限问题,确保你有写入/usr/local/的权限。

环境变量设置

独立于操作系统,你需要设置以下环境变量:

  • GOROOT: Go安装的根目录(通常自动设置)。
  • GOPATH: 你的工作目录。
  • PATH: 添加$GOROOT/bin

例如,在bash环境下,你可以添加以下行到 .bashrc.bash_profile

export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH

四、配置环境变量

file
配置环境变量是在安装Go之后的关键一步,它将影响Go的运行和编译。这里我们将探讨如何在不同的操作系统中进行这一步骤。

Windows系统

方法一:使用图形界面
  1. 右键点击“我的电脑”或“计算机”,然后选择“属性”。
  2. 点击“高级系统设置”。
  3. 在弹出的对话框中点击“环境变量”按钮。
  4. 添加或修改以下环境变量:
    • GOROOT:Go的安装路径(例如:C:\Go)。
    • GOPATH:工作目录(例如:C:\Users\your-username\go)。
    • PATH:追加%GOROOT%\bin
方法二:使用命令行

打开命令提示符,然后执行以下命令:

setx GOROOT "C:\Go"
setx GOPATH "C:\Users\your-username\go"
setx PATH "%PATH%;%GOROOT%\bin"

Linux/Unix系统

打开你的shell配置文件(如:.bashrc, .zshrc等)并添加以下行:

export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

然后运行 source ~/.bashrc(或对应的配置文件)以应用新的环境变量。

macOS系统

对于macOS,你可以编辑 .bash_profile.zshrc 文件(取决于你使用的shell):

export GOROOT=/usr/local/opt/go/libexec
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

然后,运行 source ~/.bash_profilesource ~/.zshrc

异常情况和解决办法

  1. 环境变量未生效

    • 解决方案:确保你正确地保存了环境变量设置,并重新打开命令行界面。
  2. 权限不足

    • 解决方案:在Linux或macOS系统中,使用sudo权限编辑系统级的环境设置。
  3. 路径错误

    • 解决方案:检查GOROOTGOPATH的路径设置,确保它们指向正确的目录。
  4. 命令行找不到go命令

    • 解决方案:确保$GOROOT/binPATH环境变量中。
  5. 多版本冲突

    • 解决方案:清除旧版本的Go环境变量,只设置一个版本的环境变量。

五、验证安装

完成Golang的安装和环境变量配置后,下一步就是验证安装是否成功。这个步骤至关重要,因为只有确保所有设置都正确,你才能顺利地进行Go编程。以下是各种操作系统下验证安装的方法。

Windows系统

  1. 打开命令提示符(CMD):可以通过搜索或者运行cmd来打开。

  2. 运行验证命令:在命令提示符中输入 go version

    go version
    

    如果一切设置正确,这会返回Go的版本信息。

Linux/Unix系统

  1. 打开终端:可以通过快捷键或搜索来打开。

  2. 运行验证命令:输入以下命令。

    go version
    

    如果一切设置正确,这会返回Go的版本信息。

macOS系统

  1. 打开Terminal:可以在Applications -> Utilities找到Terminal。

  2. 运行验证命令:输入以下命令。

    go version
    

    你应该看到Go的版本信息,表明安装成功。

异常处理

  1. 版本信息未显示

    • 原因:通常是因为GOROOTPATH环境变量没有设置正确。
    • 解决方案:检查并重新配置这些环境变量。
  2. 版本信息显示不完整或出错

    • 原因:可能是多个Go版本冲突或安装包损坏。
    • 解决方案:卸载所有Go版本,然后重新安装。
  3. 命令行提示go:command not found

    • 原因PATH环境变量没有配置好。
    • 解决方案:将Go的bin目录添加到PATH环境变量中。
  4. 权限问题

    • 原因:Linux/Unix系统可能因权限不足而无法执行。
    • 解决方案:使用sudo重新执行命令。

进一步验证

为了更全面地测试你的Go环境,可以尝试编写、编译并运行一个简单的Go程序。

package main

import "fmt"

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

保存为hello.go,然后运行以下命令编译和执行:

go run hello.go

如果看到输出Hello, World!,那么你的Go环境应该没有问题。


六、第一个Go程序:Hello World

file
写一个"Hello World"程序通常是学习新编程语言的第一步。在Go语言中,这个过程也特别简单和直观。但是,为了展示Go的特性,我们将用几种不同的方法来实现这一目标。

基础实现

  1. 创建一个新的Go文件:使用文本编辑器或IDE,创建一个名为hello.go的新文件。

  2. 输入代码

    package main
    
    import "fmt"
    
    func main() {
        fmt.Println("Hello, World!")
    }
    
  3. 编译和运行:打开终端,导航到文件的目录,然后执行以下命令。

    go run hello.go
    

    如果一切正常,你应该会看到Hello, World!输出到终端。

使用变量

在这个实现中,我们将使用一个变量来存储字符串,并打印出来。

  1. 输入代码

    package main
    
    import "fmt"
    
    func main() {
        message := "Hello, World!"
        fmt.Println(message)
    }
    
  2. 编译和运行:同样使用go run hello.go来编译和运行程序。

使用函数

为了让代码更模块化,我们可以将打印逻辑放入一个函数中。

  1. 输入代码

    package main
    
    import "fmt"
    
    func printMessage(message string) {
        fmt.Println(message)
    }
    
    func main() {
        printMessage("Hello, World!")
    }
    
  2. 编译和运行:使用go run hello.go

使用多个文件

当项目变大,一个好的做法是将代码分解成多个文件。在这个例子中,我们将创建一个新的Go文件来存放printMessage函数。

  1. 创建message.go文件并输入以下代码

    package main
    
    import "fmt"
    
    func printMessage(message string) {
        fmt.Println(message)
    }
    
  2. hello.go文件中输入以下代码

    package main
    
    func main() {
        printMessage("Hello, World!")
    }
    
  3. 编译和运行

    go run hello.go message.go
    

异常情况和解决办法

  1. 代码编译错误

    • 解决方案:检查是否有语法错误或遗漏的导入语句。
  2. 函数未定义

    • 解决方案:确保所有的文件都被包括在编译命令中。
  3. 包或库缺失

    • 解决方案:运行 go get <package-name> 以安装缺失的包或库。

七、总结

在这篇文章中,我们一步步地完成了Golang环境的设置,从下载与安装开始,到环境变量的配置,再到验证安装是否成功,最后我们还尝试编写了几种不同实现的"Hello, World!"程序。

回顾关键步骤

  1. 环境要求:我们详细描述了在不同操作系统下的环境要求和异常情况的处理。

  2. 下载与安装:我们覆盖了多种操作系统(Windows, Linux/Unix, macOS)下的安装方式,并提供了多种下载选项。

  3. 环境变量配置:每个操作系统都有自己特定的方法来配置环境变量,我们提供了详细的指导,以及可能出现的问题和解决方案。

  4. 验证安装:在所有设置完成后,我们运行了go version以确认安装成功,同时也提供了一系列的异常处理方式。

  5. 第一个Go程序:最后,我们使用几种不同的方法来编写、编译和运行了"Hello, World!"程序,这包括:

    • 基础实现
    • 使用变量
    • 使用函数
    • 使用多个文件

技术深度和细节

  • 在讲解环境变量配置时,我们深入探讨了GOROOTGOPATH,以及它们在Go环境中的角色。
  • 在验证安装部分,我们介绍了多种可能出现的异常情况和相应的解决办法。
  • 在编写"Hello, World!"程序时,我们不仅展示了基础实现,还通过使用变量、函数和多文件架构,展示了Go的一些核心特性和最佳实践。

关注TechLeadCloud,分享互联网架构、云服务技术的全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1053984.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用CreateProcess崩溃:处未处理的异常: 0xC0000005: 写入位置 0x00415652 时发生访问冲突

问题代码 if (!CreateProcess(NULL,L"pela.exe",NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi)){return 0;}如果CreateProcess的第二个参数字符串是常量或者是储存在堆中的就会被写保护&#xff0c;崩溃。如果字符串定义到栈或者全局变量就不存在此问题了。 正确的…

初级篇—第二章SELECT查询语句

文章目录 什么是SQLSQL 分类SQL语言的规则与规范阿里巴巴MySQL命名规范数据导入指令 显示表结构 DESC基本的SELECT语句SELECTSELECT ... FROM列的别名 AS去除重复行 DISTINCT空值参与运算着重号查询常数过滤数据 WHERE练习 运算符算术运算符加减符号乘除符号取模符号 符号比较运…

SNERT预备队招新CTF体验赛-Misc(SWCTF)

目录 1、最简单的隐写 2、旋转我 3、is_here 4、zip伪加密 5、压缩包密码爆破 6、我就藏在照片里 7、所以我放弃了bk 8、套娃 9、来自银河的信号 10、Track_Me 11、勇师傅的奇思妙想 1、最简单的隐写 下载附件后&#xff0c;图片格式并不支持打开 根据题目提示&…

Window 安装多个版本的 java 并按需切换

1、按需下载对应版本的 java 官网链接&#xff1a;Java Downloads | Oracle 2、执行安装程序&#xff0c;根据安装向导一步一步走就行&#xff0c;每个版本安装在不同的目录下。 3、配置环境变量 a&#xff09;为每个版本 java 新建不同名称的 JAVA_HOME 系统变量&#xff0…

最优化:建模、算法与理论(最优性理论

第五章 最优性理论 在实际中最优化问题的形式多种多样&#xff0c;给定一类具体的优化问题&#xff0c;我们首先需要分析其解的存在性。如果优化问题的解存在&#xff0c;再考虑如何设计算法求出最优解&#xff0c;一般的非凸优化问题可能存在很多局部极小解&#xff0c;但其往…

使用WPS自动化转换办公文档: 将Word, PowerPoint和Excel文件转换为PDF

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

IDEA-2023-jdk8 HelloWorld的实现

目录 1 新建Project - Class 2 编写代码 3 运行 1 新建Project - Class 选择"New Project"&#xff1a; 指名工程名、使用的JDK版本等信息。如下所示&#xff1a; 接着创建Java类&#xff1a; 2 编写代码 public class HelloWorld {public static void main(S…

桂院校园导航 | 云上高校导航 云开发项目 二次开发教程 1.2

Gitee代码仓库&#xff1a;桂院校园导航小程序 GitHub代码仓库&#xff1a;GLU-Campus-Guide 演示视频 【2023广西赛区 | 三等奖】中国大学生计算机设计大赛 云上高校导航 先 假装 大伙都成功安装了云开发项目&#xff0c;并能在 微信开发者工具 和 手机 上正确运行。 接着就…

【生物信息学】使用HSIC LASSO方法进行特征选择

目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 3. IDE 三、实验内容 0. 导入必要的工具 1. 读取数据 2. 划分训练集和测试集 3. 进行HSIC LASSO特征选择 4. 特征提取 5. 使用随机森林进行分类&#xff08;使用所有特征&#xff09; 6. 使用随机森…

【面试经典150 | 矩阵】有效的数独

文章目录 写在前面Tag题目来源题目解读解题思路方法一&#xff1a;一次遍历数组 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本题涉及到的数据结…

电脑通过串口助手和51单片机串口通讯

今天有时间把电脑和51单片机之间的串口通讯搞定了&#xff0c;电脑发送的串口数据&#xff0c;单片机能够正常接收并显示到oled屏幕上&#xff0c;特此记录一下&#xff0c;防止后面自己忘记了怎么搞得了。 先来两个图片看看结果吧&#xff01; 下面是串口3.c的文件全部内容&a…

python爬取百度图片

1.查询数据 打开网页。 https://cn.bing.com/images/search?q%E7%99%BE%E5%BA%A6%E5%9B%BE%E7%89%87&formHDRSC2&first1&cw1585&ch924 我们右键查看网页源代码,发现能找到我们需要的img衔接,但是这是一个动态网页。我们每次向下滑动网页&#xff0c;会发现图…

基于Java的医院预约挂号系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

uboot启动流程-涉及lowlevel_init汇编函数

一. uboot启动流程涉及函数 之前文章简单分析了 uboot启动流程的开始&#xff0c;从链接脚本文件 u-boot.lds 中&#xff0c;我们已经知道了入口点是 arch/arm/lib/vectors.S 文件中的 _start函数。 _start函数&#xff1a;调用了 reset 函数&#xff0c;reset 函数内部&…

【小沐学前端】Node.js实现基于Protobuf协议的UDP通信(UDP/TCP/WebSocket)

文章目录 1、简介1.1 node1.2 Protobuf 2、下载和安装2.1 node2.2 Protobuf2.2.1 安装2.2.2 工具 3、node 代码示例3.1 HTTP3.2 UDP单播3.4 UDP广播 4、Protobuf 代码示例4.1 例子: awesome.proto4.1.1 加载.proto文件方式4.1.2 加载.json文件方式4.1.3 加载.js文件方式 4.2 例…

An attempt was made to call the method xxx but it does not exist

场景 在公司项目中做配置迁移的时候&#xff0c;服务启动时报错 报错信息 Description:An attempt was made to call the method redis.clients.jedis.Jedis.<init>(Ljava/lang/String;IIIZLjavax/net/ssl/SSLSocketFactory;Ljavax/net/ssl/SSLParameters;Ljavax/net/…

编程每日一练(多语言实现)基础篇:求总数问题

文章目录 一、实例描述二、技术要点三、代码实现3.1 C 语言实现3.2 Python 语言实现3.3 Java 语言实现3.4 JavaScript 语言实现 一、实例描述 集邮爱好者把所有的邮票存放在三个集邮册中&#xff0c;在A册内存放全部的十分之二&#xff0c;在B册内存放不知道是全部的七分之几&…

xPortPendSVHandler任务切换流程

__asm void xPortPendSVHandler( void ) { extern uxCriticalNesting; extern pxCurrentTCB; extern vTaskSwitchContext; PRESERVE8 mrs r0, psp isb//指令同步命令&#xff0c; ldr r3, pxCurrentTCB /* Get the location of the current TCB. */ ldr r2, [r3]//r2保存…

Ghostscript 在 Linux 和 Windows 系统的应用与问题解决

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

分享10个必备的VS Code技巧和窍门,提高你的开发效率

目录 前言 1. 时间线视图&#xff1a;本地源代码控制 2. 自动保存&#xff1a;不再需要按Ctrl S 3. 使用命令面板进行任何操作 4、快速转到文件 5. 快速跳转指定行 6. 快速删除该行 7. 享受使用流畅的光标进行打字 8. 快速格式化代码 9. 使用多光标编辑功能节省时间…