当前位置: 首页 > news >正文

GO入门(一)——安装和了解

作为GO语言的入门,了解GO的一些基本信息

目录

  • 一、 起源与发展
  • 二、特性
    • 静态类型与编译效率
    • 内置并发模型
    • 垃圾回收与内存安全
    • 标准库与工具链
    • 跨平台支持
  • 三、应用场景
    • 云计算与微服务
    • 网络服务
    • DevOps工具
    • 数据处理
  • 四、安装与运行环境
    • 安装
    • Go 环境变量
    • 安装目录清单

一、 起源与发展

与2007年设计,2009年正式发布
从 2010 年 5 月起,谷歌开始将 Go 语言投入到后端基础设施的实际开发中

二、特性

静态类型与编译效率

GO是静态类型语言,编译时进行类型检查,但语法简洁。编译器直接将代码编译为机器码,无需虚拟机,运行效率接近C/C++。独特的编译设计使得大型项目编译速度极快。

内置并发模型

通过goroutine(轻量级线程)和channel(通信机制)原生支持并发。goroutine由运行时调度,开销极小;channel用于安全的数据共享,避免传统线程锁的复杂性。

垃圾回收与内存安全

自动内存管理减轻开发者负担,垃圾回收器(GC)经过多次优化,暂停时间已缩短至毫秒级。同时避免指针运算等危险操作,减少内存错误。

标准库与工具链

提供丰富的标准库,涵盖网络、加密、文件处理等场景。工具链包含格式化工具(gofmt)、依赖管理(go mod)、测试框架等,强调工程化统一标准。

跨平台支持

支持Windows、Linux、macOS等主流操作系统,可交叉编译生成不同平台的可执行文件,部署便捷。

三、应用场景

GO语言通过平衡性能、开发效率和工程化实践,成为系统级和服务端开发的重要选择。

云计算与微服务

Docker、Kubernetes等核心项目采用GO开发,得益于其高性能和低资源占用。

网络服务

适用于API服务器、消息队列等,标准库的net/http性能优异。

DevOps工具

如Terraform、Prometheus,利用GO的跨平台和易部署特性。

数据处理

部分替代Python脚本场景,编译后执行效率更高。

四、安装与运行环境

安装

这里只针对windows的安装

根据下载地址下载
在这里插入图片描述

根据自己安装的平台和版本选择安装即可
安装之后,你只需要配置 $GOPATH 这一个环境变量就可以开始使用 Go 语言进行开发了,其它的环境变量安装包均会进行自动设置

Go 环境变量

  • $GOROOT 表示 Go 在你的电脑上的安装位置,它的值一般都是 $HOME/go,当然,你也可以安装在别的地方。
  • $GOARCH 表示目标机器的处理器架构,它的值可以是 386、amd64 或 arm。
  • $GOOS 表示目标机器的操作系统,它的值可以是 darwin、freebsd、linux 或 windows。
  • $GOBIN 表示编译器和链接器的安装位置,默认是 $GOROOT/bin,如果你使用的是 Go 1.0.3 及以后的版本,一般情况下你可以将它的值设置为空,Go 将会使用前面提到的默认值。

安装目录清单

Go 安装目录($GOROOT)的文件夹结构如下所示:

  • /bin:包含可执行文件,如:编译器,Go 工具
  • /doc:包含示例程序,代码工具,本地文档等
  • /lib:包含文档模版
  • /misc:包含与支持 Go 编辑器有关的配置文件以及 cgo 的示例
  • /os_arch:包含标准库的包的对象文件(.a)
  • /src:包含源代码构建脚本和标准库的包的完整源代码(Go 是一门开源语言)
  • /src/cmd:包含 Go 和 C 的编译器和命令行脚本
http://www.dtcms.com/a/356573.html

相关文章:

  • MySQL底层数据结构与算法浅析
  • “设计深圳”亚洲权威消费科技与室内设计盛会
  • CVPR 强化学习模块深度分析:连多项式不等式+自驾规划
  • 在Linux的环境下安装GitLab(保姆级别)
  • 打造高效外贸网站:美国服务器的战略价值
  • 阻塞,非阻塞,同步,异步的理解
  • Windows 下 MSYS2 + MinGW-w64 配置 Fyne GUI 编译环境全流程
  • 【计算机408计算机网络】第三章:自底向上五层模型之数据链路层
  • WINTRUST!_GetMessage函数分析之CRYPT32!CryptSIPGetSignedDataMsg函数的作用是得到nt5inf.cat的信息
  • 【算法】链表专题
  • 钉钉补卡事件处理方案
  • uni-app 跨平台项目的 iOS 上架流程:多工具组合的高效协作方案
  • 常见视频封装格式对比
  • 从零开始学习单片机16
  • 数据结构——线性表(链表,力扣中等篇,增删查改)
  • AI接管浏览器:Anthropic发布Claude for Chrome,是效率革命还是安全噩梦?
  • MySQL-内置函数
  • Python 【深度解析】线程与进程:操作系统中多任务的核心机制
  • WebRTC音频QoS方法五(音频变速算法之Expand算法实现)
  • Nodejs介绍
  • FreeRTOS基础知识记录
  • MTK Linux DRM分析(二十)- KMS drm_mm.c drm_vma_manager.c
  • Docker部署单节点使用KRaft存储数据的Kafka与可视化界面Kafka-Map
  • el-table合并列实例
  • 云市场周报 (2025.08.29):解读阿里云g8y、腾讯云Serverless容器与FinOps趋势
  • 神经语言学与脑科学启发的NLP深层分析:从统计拟合到机制理解的范式转变
  • LeetCode 317 离建筑物最近的距离
  • Spring Boot 整合 MongoDB:CRUD 与聚合查询实战
  • vscode优化合集 - Visual Studio Code
  • TensorFlow 面试题及详细答案 120道(51-60)-- 模型保存、加载与部署