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

在这里插入图片描述

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.xdnf.cn/news/1552294.html

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

相关文章

带徒实训项目实战讲义分享:ApiFirst文档对比功能页面开发

亲爱的学员朋友,前面咱一起实现了入参列表对比的部分功能,本节在此基础上继续开发和重构代码,go! 文章目录 已实现的功能实现API入参列表的增删对比合并参数列表杜绝内部变量暴露提取modifiedType枚举 已实现的功能 基于0.0.6和…

Dubbo(学习笔记)

单体的应用架构: war可以对外的独立启动 jar是默认的 写操作是非幂等性的,多次写操作,会导致数据库出现错误的数据的情况。 影响RPC框架的性能主要有两点:序列化,建立连接(通讯) 灰度发布&#…

山高水长:要离职该怎么做——之找到一份工作

一、前言 有关离职的最好方法本应是显而易见的,但是许多软件开发者把离职这件事情都搞砸了( 1、以错误的方式离职会给你的职业生涯带来灾难性的后果,并且可能会给你的声望带来永久性的损害,特别是当你住在一座小镇上的时候。 2、…

2024-09-04 深入JavaScript高级语法十五——浏览器原理-V8引擎-js执行原理

目录 1、浏览器的工作原理1.1、认识浏览器内核1.2、浏览器渲染过程 2、JS引擎2.1、认识 JavaScript 引擎2.2、浏览器内核和JS引擎的关系2.3、V8引擎的原理2.4、V8引擎的架构2.5、V8执行的细节 3、全局代码的执行过程3.1、初始化全局对象3.2、执行上下文栈(调用栈&am…

RSA算法模拟实验报告(后篇,非常感谢橘味小奶糖的反馈)

有朋友说代码运行不出来,因为我是平板上写的,没在电脑上运行过,这也算是我的疏忽吧,今天尝试了一下,刚开始运行出来是乱码,改了一些东西,还是运行出来了。 我用的devc。 首先是文字显示&#…

基于SpringBoot+Vue的留学信息推荐系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

应用中的错误处理概述

title: 应用中的错误处理概述 date: 2024/10/1 updated: 2024/10/1 author: cmdragon excerpt: 摘要:本文介绍了Nuxt中的错误处理机制,包括全局错误处理器和组件层级错误捕获,以及错误传递规则和生产环境下的处理方式 categories: 前端开发tags: 错误处理Nuxt应用全局处…

【含文档】基于Springboot+Vue的古风生活体验交流网站(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…

基于JAVA+SpringBoot+Vue的校园商铺管理系统

基于JAVASpringBootVue的校园商铺管理系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末附源码下载链接🍅 哈…

解析!文档扫描 SDK 中的高级图像处理技术

随着世界数字化,文档扫描已成为现代商业运营的关键,它使文档的存储、访问和管理更加便捷。然而,扫描图像的质量对于这些数字档案的有效性至关重要。高质量的扫描可确保文本清晰、数据准确捕获并且信息易于检索。 另一方面,质量差…

视频——教学篇——12——定一个涨粉小目标,如何从0-10万粉?

文章目录 1、粉丝即正义。什么是粉丝价值?粉丝价值粉丝活跃度商业价值 2、找到账号目标和定位3、涨粉的基础是更新频率4、优质少更与良品多更的策略5、有播放却不涨粉?如何提高播放转粉率? 1、粉丝即正义。什么是粉丝价值? 在了解…

关于计算机算法设计方法的思考

灵感来源——二分图匹配对的男女配对 那种实际情况的背景解决不是无意义的“理解配对” 相反的是我认为这反而是设计的根本。人思考问题,再考虑如何使用计算机来实现。人能思考的逻辑问题计算机一般都可以实现,重要的是如何把问题掰碎扔给计算机解决。…

C0008.Clion利用C++开发Qt界面,使用OpenCV时,配置OpenCV方法

安装OpenCV 配置环境 配置Clion中的CMakeLists.txt文件 # 设置OpenCV的安装路径 set(OpenCV_DIR "D:/OpenCv_Win/opencv/build/x64/vc16/lib"

ubuntu 24.04如何分配内存

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

Cannon-es.js之removeConstraint破坏约束案例

本文目录 前言最终效果1、postStep2、前置准备2.1 代码2.2 效果 3、removeConstraint3.1 解除约束代码效果 4、完整代码 前言 在3D物理引擎的广阔天地中,cannon-es以其轻量级、高性能和易于集成的特点,成为了WebGL环境中物理模拟的首选工具。它不仅能够精…

【C++】指针是啥东西?看这篇博客就够了!

指针到底是啥东西?很多人都有这样的问题,今天我就为大家来解答 首先看一行代码: int a; 很显然,这行代码的用途是定义变量,那么再看一行代码 int *a; 这下懵了吧,你们以为这是一行错误的代码&#xff…

【规控+slam】探索建图方案及代码分享

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言背景建图描述SLAM定位+感知数据标记构建地图自动探索建图规划方法一:手动遥控探索建图算法步骤方法二:手动给定目标点探索建图算法原理方法三:f…

动态规划最低票价

前言&#xff1a;之前看到过这个题目归结到动态规划&#xff0c;当初还没什么思路&#xff0c;其实就是定义好dp [ i ] 为到第 i 个的最小费用就行&#xff0c;我们可以用upper_bound来优化我们的查找下标 题目地址 class Solution { public:int mincostTickets(vector<int&…

Minstrel自动生成结构化提示,让AI为AI写提示词的多代理提示生成框架

在人工智能快速发展的今天&#xff0c;如何有效利用大型语言模型&#xff08;LLMs&#xff09;成为了一个普遍关注的话题。这是9月份的一篇论文&#xff0c;提出了LangGPT结构化提示框架和Minstrel多代理提示生成系统&#xff0c;为非AI专家使用LLMs提供了强大支持。 对于非人…

SpringBoot框架下的社区医院信息系统开发

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理社区医院信息平台的相关信息成为必然。开发…