Go语言入门:掌握基础语法与核心概念

news2024/10/1 15:57:14

在这里插入图片描述

Go(又称 Golang)是一种开源的编程语言,由 Google 的 Robert Griesemer、Rob Pike 和 Ken Thompson 在 2007 年设计。Go 语言在设计时考虑了现代多核处理器的并发计算,其语法简洁、易于理解,同时提供了高效的编译和执行性能。Go 语言的一些关键特性包括:

  1. 简洁的语法:Go 语言的语法简单明了,易于学习。
  2. 静态类型:Go 是一种静态类型语言,但提供了动态类型的灵活性。
  3. 编译型语言:Go 语言编写的程序会被编译成机器码,直接在操作系统上运行,不需要解释器。
  4. 并发支持:Go 语言内置了并发编程的支持,通过 goroutines 和 channels 简化了并发编程。
  5. 内存安全:Go 语言提供了垃圾回收机制,帮助开发者管理内存。
  6. 标准库丰富:Go 语言拥有一个功能丰富的标准库,涵盖了网络编程、加密、文件处理等多个领域。
  7. 跨平台:Go 语言编写的程序可以轻松地在不同的操作系统和架构之间移植。

如何安装 Golang

安装步骤

  1. 下载 Go 语言安装包

    • 访问 Go 语言的官方网站 https://golang.org/dl/。
    • 选择适合你的操作系统和架构的安装包下载。
  2. 运行安装程序

    • 对于 Windows 和 macOS,下载后运行安装程序并按照提示完成安装。
    • 对于 Linux,你可能需要解压缩下载的文件,并将其放置在适当的目录下。
  3. 设置环境变量

    • 设置 GOPATH 环境变量,这是 Go 语言的工作空间目录。
    • 设置 GOROOT 环境变量,指向 Go 语言的安装目录。
    • 将 Go 语言的可执行文件目录添加到 PATH 环境变量中。
  4. 验证安装

    • 打开命令行或终端,运行以下命令来验证安装:
      go version
      
    • 这将输出安装的 Go 语言版本。

示例安装命令

  • Windows

    choco install golang
    

    或者使用官方安装程序。

  • macOS

    brew install go
    

    或者使用官方安装程序。

  • Linux(以 Ubuntu 为例):

    sudo apt-get install golang-go
    

    或者下载 tar.gz 文件并解压到 /usr/local 目录。

配置环境变量

  • Windows

    set GOPATH=C:\go-workspace
    set GOROOT=C:\Program Files\Go
    set PATH=%PATH%;%GOROOT%\bin;%GOPATH%\bin
    
  • macOS/Linux

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

在 Go 语言的环境中,GOPATHGOROOT 是两个重要的环境变量,它们定义了 Go 语言的工作环境和安装位置。

GOROOT

GOROOT 是 Go 语言的安装目录,它包含了 Go 的标准库、编译器和工具链。无论何时安装 Go 语言,都会在系统中的某个位置安装这些核心组件,GOROOT 就是指向这个位置的路径。

  • 默认位置:在 Windows 上,默认安装在 C:\Program Files\Go;在 macOS 和 Linux 上,默认安装在 /usr/local/go

GOPATH

GOPATH 是 Go 语言的工作目录,它定义了你的 Go 项目和代码的位置。GOPATH 可以设置为一个或多个目录,这些目录包含了三个主要子目录:srcpkgbin

  • src:存放源代码文件和包。
  • pkg:编译后的包文件存放位置。
  • bin:编译后的可执行文件存放位置。

区别

  • GOROOT 是 Go 语言的核心安装目录,包含了 Go 的标准库和工具。
  • GOPATH 是你的工作空间,包含了你自己的代码、依赖和构建的二进制文件。

设置其中一个环境变量的问题

  • 只设置了 GOPATH
    如果你只设置了 GOPATH 而没有设置 GOROOT,Go 语言的编译器和标准库将无法找到。因为 Go 语言的工具链需要知道标准库和编译器的位置来编译和运行你的代码。

  • 只设置了 GOROOT
    如果你只设置了 GOROOT 而没有设置 GOPATH,你的工作目录将不存在。这意味着你没有一个地方来编写代码、存放依赖或构建项目。虽然这不会影响 Go 语言的编译器和标准库的工作,但它会使得开发 Go 程序变得困难。

如何设置环境变量

  • Windows

    set GOROOT=C:\Program Files\Go
    set GOPATH=C:\go-workspace
    set PATH=%PATH%;%GOROOT%\bin;%GOPATH%\bin
    
  • macOS/Linux

    export GOROOT=/usr/local/go
    export GOPATH=$HOME/go-workspace
    export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
    
  • 检查 GOROOT 设置

    • 在命令行或终端中,运行以下命令来查看 GOROOT 的当前值:
      go env GOROOT
      
    • 这将显示 Go 语言的安装目录。确保这个路径是正确的,并且该目录下包含了 Go 的标准库和二进制文件。
  • 检查 GOPATH 设置

    • 同样,在命令行或终端中,运行以下命令来查看 GOPATH 的当前值:
      go env GOPATH
      
    • 这将显示你的 Go 工作空间目录。确保这个路径是正确的,并且该目录下包含了 srcpkgbin 子目录。
  • 检查 Go 版本

    • 运行以下命令来检查 Go 的版本,确保 Go 语言已正确安装:
      go version
      
    • 这将显示 Go 的版本号和编译信息。确保版本号与你的 GOROOT 路径下的版本相匹配。

注意事项

  • 确保 GOPATHGOROOT 环境变量正确设置。
  • 在 Linux 和 macOS 上,你可能需要使用 echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc 或类似的命令来将 Go 添加到 PATH
  • 在 Windows 上,你可以在“系统属性”中的“环境变量”设置 GOPATHGOROOT

安装完成后,你就可以开始使用 Go 语言编写程序了。

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

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

相关文章

Android Studio | 无法识别Icons.Default.Spa中的Spa

编写底部导航栏&#xff0c;涉及到Spa部分出现报红&#xff1a; 解决办法&#xff1a;在build.gradle.kts中引入图标依赖 dependencies {implementation "androidx.compose.material:material-icons-extended:<version>" }

八,MyBatis-Plus 的“多数据源”的连接操作(详细说明)

八&#xff0c;MyBatis-Plus 的“多数据源”的连接操作&#xff08;详细说明&#xff09; 文章目录 八&#xff0c;MyBatis-Plus 的“多数据源”的连接操作&#xff08;详细说明&#xff09;最后&#xff1a; 在学习多数据源之前&#xff0c;我们先来了解一下分库分表 当一个项…

数据清洗第1篇章 - 处理缺失值和重复值

数据清洗是数据分析过程中至关重要的一步&#xff0c;它确保数据的准确性、一致性和完整性。这不仅有助于提高分析结果的可靠性和有效性&#xff0c;还能为算法建模决策提供高质量的数据基础。在进行数据分析和建模的过程中&#xff0c;大量的时间花在数据准备上&#xff1a;加…

[uni-app]小兔鲜-05登录+个人中心

登录 微信授权登录: 通过wx.login()获取code登录凭证, 通过特定类型按钮获取用户手机号, 实现授权登录 import type { LoginResult } from /types/member import { http } from /utils/httptype LoginParams {code: stringencryptedData: stringiv: string }// 微信登录 expo…

每日一题|983. 最低票价|动态规划、记忆化递归

本题求解最小值&#xff0c;思路是动态规划&#xff0c;但是遇到的问题是&#xff1a;动态规划更新的顺序和步长&#xff0c;以及可能存在的递归溢出问题。 1、确定dp数组含义 dp[i]表示第i天到最后一天&#xff08;可能不在需要出行的天数里&#xff09;&#xff0c;需要花费…

图神经网络DGL库之消息传递

图神经网络DGL库之消息传递 1 消息传递1.1 图解1.2 语法格式1.2.1 message函数1.2.2 reduce函数1.2.3 update函数1.2.4 apply_nodes函数1.2.5 apply_edges函数 2 具体例子2.1 建图2.2 消息传递2.2.1 函数构造2.2.2 边更新2.2.3 节点更新2.2.4 消息聚合1 未使用更新函数2 使用更…

M3u8视频由手机拷贝到电脑之后,通过potplayer播放报错找不到文件地址怎么解决?

该文章前面三节主要介绍M3u8视频是什么&#xff0c;视频播放错误(找不到地址)的解决方法在后面 M3U8是一种多媒体播放列表文件格式&#xff0c;主要用于流媒体播放。 一、文件格式特点 1. 文本文件&#xff1a;M3U8是一个采用 UTF-8 编码的文本文件&#xff0c;这意味着它可…

Shell入门基础学习笔记

目录 第1章 Shell概述 第2章 Shell解析器 第3章 Shell脚本入门 第4章 Shell中的变量 4.1 系统变量 4.2 自定义变量 4.3 特殊变量&#xff1a;$n 4.4 特殊变量&#xff1a;$# 4.5 特殊变量&#xff1a;$*、$ 4.6 特殊变量&#xff1a;$&#xff1f; 第5章 运算符 …

玩机进阶教程----MTK芯片机型修改串码IMEI 修改MEID 修复基带步骤详细演示 总结

在前面的博文中有对MTK芯片机型修改参数步骤做过解析。但其中有些步骤友友不太了解。在以前MTK芯片 3G 4G的机型中有使用老版本修改工具SN_Writer_Tool来修改,但对于新版本mtk芯片机型兼容性不是太好。而且局限于必须有基带BP AP文件。今天针对新工具Modem META 修改 做个补充…

国外问卷调查匠哥已经不带人了,但是还可以交流

国外问卷调查匠哥已经不带人了&#xff0c;但是还可以来和匠哥交流&#xff0c; 为啥不带人了呢&#xff1f; 从今年年初开始&#xff0c;匠哥在带学员的过程中发现&#xff1a; 跟往年同样的收费&#xff0c;同样的教学&#xff0c;甚至我付出的时间精力比以前还多&#xff…

Java | Leetcode Java题解之第447题回旋镖的数量

题目&#xff1a; 题解&#xff1a; class Solution {public int numberOfBoomerangs(int[][] points) {int ans 0;for (int[] p : points) {Map<Integer, Integer> cnt new HashMap<Integer, Integer>();for (int[] q : points) {int dis (p[0] - q[0]) * (p[…

如何构建一个生产级的AI平台(1)?

本文概述了生成式 AI 平台的常见组件、它们的作用以及它们的实现方式。 本文重点介绍部署 AI 应用程序的整体架构。 它讨论了需要哪些组件以及构建这些组件时的注意事项。 它不是关于如何构建 AI 应用程序。 这就是整体架构的样子。 这是一个相当复杂的系统。 这篇文章将从最…

基于Leaflet和天地图的细直箭头和突击方向标绘实战

目录 前言 一、细直箭头和突击方向的类设计 1、总体类图 2、对象区别 二、标绘绘制的具体实现 1、绘制时序图 2、相关点的具体绘制 3、最终的成果 三、总结 前言 今天是10月1日国庆节&#xff0c;迎来我们伟大祖国75周年的华诞。有国才有家&#xff0c;在这里首先祝我们…

【vs code(cursor) ssh连不上服务器(2)】但是 Terminal 可以连上,问题解决 ✅

【vs code(cursor) ssh连不上服务器】但是 Terminal 可以连上&#xff0c;问题解决 ✅ 对于类似的问题&#xff0c;之前的解决方法是清洗配置文件再重新连接。当重新连接不起作用时&#xff0c;可以再试下本文的方法。 问题描述&#xff1a;SSH 超时错误 vs code 连不上 ssh…

解决方案:机器学习中,回归及分类常用的模型评估指标有哪些

文章目录 一、现象二、解决方案回归任务的评价指标&#xff1a;均方误差 (MSE):平均绝对误差 (MAE): 分类任务的评价指标&#xff1a;准确率 (Accuracy):混淆矩阵 (Confusion Matrix):精确度 (Precision):召回率 (Recall):F1分数 (F1 Score):ROC曲线 (Receiver Operating Chara…

Qt的互斥量用法

目的 互斥量的概念 互斥量是一个可以处于两态之一的变量:解锁和加锁。这样&#xff0c;只需要一个二进制位表示它&#xff0c;不过实际上&#xff0c;常常使用一个整型量&#xff0c;0表示解锁&#xff0c;而其他所有的值则表示加锁。互斥量使用两个过程。当一个线程(或进程)…

ubuntu 24.04如何分配内存

24版与之前有一点不同&#xff0c;这里记录一下我的经历&#xff0c;希望有帮助 1.进入ubuntu直接试用&#xff0c;没有之前的安装向导&#xff08;如图&#xff09;&#xff0c;在屏幕的左上角会找到安装Ubuntu 2.分配内存 24的手动分配内存&#xff0c;不需要分配系统内存&…

IOT平台颜值天花板?延凡科技物联网平台让人惊叹不已

IOT平台颜值天花板&#xff1f;延凡科技物联网平台让人惊叹不已 在物联网的时代&#xff0c;AIOT平台凭借智能化的管理和决策能力&#xff0c;为多个行业带来了巨大的提升。本文将为大家介绍AIOT物联网平台的核心功能、应用场景以及它是如何改变我们的生活的。 平台简介 AIOT物…

二维环境下的TDOA测距定位的MATLAB代码,带中文注释

TDOA测距定位程序介绍 概述 本MATLAB程序实现了基于时间差到达&#xff08;TDOA&#xff09;技术的二维测距定位&#xff0c;能够处理4个或任意数量&#xff08;大于3个&#xff09;的锚节点。在无线定位和导航系统中&#xff0c;TDOA是一种常用的定位方法&#xff0c;通过测量…

一款免费开源的接口测试工具——ApiFox详细教程

前言 APIfox是一种功能强大的接口测试工具&#xff0c;它可以帮助用户轻松地进行REST API的自动化测试和文档编写。本文将从以下几个方面介绍APIfox的基本使用方法、特点和优势。 一、什么是APIfox&#xff1f; APIfox是一款基于Web的REST API测试工具&#xff0c;通过创建测…