1 Go语言开发环境搭建详细教程【Go语言教程】

news2025/1/12 0:55:16

Go语言开发环境搭建【Win、Linux、Mac】

1 SDK下载

  • 官网地址:golang.org,因为一些原因国内可能无法访问。可以使用下面第二个链接。
  • 国内地址访问:https://golang.google.cn/dl或者https://www.golangtc.com/download

在这里插入图片描述
根据自己操作系统版本,下载安装即可,目录尽量选择全英文且没有空格和其他其他特殊字符。

2 环境变量配置[GOPATH、GOROOT]

2.1 Windows下

GOPATH:即默认的workspace路径,在未指定项目路径时使用;
GOROOT:Golang的安装路径

讲解:
在这里插入图片描述

  • 进入环境变量配置:此电脑-属性-关于-高级系统设置-环境变量
    在这里插入图片描述
    ①配置GOROOT

新增系统环境变量,变量名为GOROOT,值为:go的安装目录

在这里插入图片描述
②在Path中配置,go的路径,引用上面配置的GOROOT

系统变量-Path-新增-新建的值填写为%GOROOT%\bin

在这里插入图片描述
③配置GOPATH(以后Go项目存放的路径位置)
在这里插入图片描述

2.2 linux下

①确认linux版本

uname -a

在这里插入图片描述

32位系统下载:gox.x.x.linux-386.tar.gz
64位系统下载:gox.x.x.linux-amd64.tar.gz

安装路径不要有中文或特殊符号、空格等

②安装目录建议放在/opt

通过xftp或其他软件将压缩包上传到/opt目录下

#进入对应目录并解压
cd /opt
tar -zxvf go1.9.2.linux-amd64.tar.gz

③配置环境变量

  1. 以root权限编辑/etc/profile文件
# 输入下面命令回车并输入密码后进入root权限【linux输入密码默认不显示,直接输入即可】
su root

在这里插入图片描述

  1. 使命令生效
# 刷新环境变量
source /etc/profile
# 或者注销后重新登录

在这里插入图片描述

Mac系统的上配置Go的开发环境类似于linux

3 检测

不论在windows还是linux下,直接打开终端,输入go version即可:

  • windows:
    在这里插入图片描述
  • linux:
    在这里插入图片描述

4 开发简单go程序

4.1 hello.go程序入门

①文件目录结构
在这里插入图片描述
②开发工具:选择Goland或者VSCode等

此处以VSCode演示

//每个go文件都需要归属于一个包
package main
//下面用到了fmt的Println函数,因此需要导包
import "fmt"
func main(){
	fmt.Println("hello,go")
}

运行:

//方式一:将hello.go编译为hello.exe文件,然后再直接运行hello.exe
go build hello.go
.\hello.exe

//方式二:直接以脚本方式运行(底层还是编译过了)
go run hello.go

在这里插入图片描述
拓展:指定编译后的文件名称

//将hello.go编译生成myhello.exe文件
go build -o myhello.exe hello.go

4.2 go的执行流程分析

  • 对源码编译后执行
    在这里插入图片描述
  • 直接对源码执行
    在这里插入图片描述
    两种执行方式的区别?
  1. 如果我们先编译生成了可执行文件,那么我们可以将该可执行文件拷贝到没有go开发环境的机器上,仍然可以运行【因为已经编译为了二进制,例如:windows上会直接编译生成.exe文件】
  2. 如果我们是直接go run go的源代码,那么如果要在另一个机器上运行,也需要go开发环境,否则无法执行
  3. 在编译时,编译器会将程序运行依赖的库文件包含在可执行文件中,所以,可执行文件会变大很多

5 Go语言开发的注意事项

①注意事项

  1. 源文件以.go为扩展名
  2. Go应用程序入口是main()函数
  3. Go语言严格区分大小写
  4. 每个语句不需要加分号【编译器会自动帮我们添加】,体现了go的简洁性
  5. 不能把多条语句写在同一行,否则会报错【go的编译器是一行一行编译的】
    ,
  6. 定义的变量或import的包没有使用到,代码编译不通过
    在这里插入图片描述
  7. 一个包下面只能有一个main函数入口,就类似于Java的包下面类名不能重复。如果有多个main,可以分开在不同的包下

在这里插入图片描述

②go的转义字符及注释

转义字符:

  • \t:制表符
  • \n:换行符
  • \\:一个\,通常用于文件分隔符
  • \r:回车符
    在这里插入图片描述
  • \":代表一个"

注释:

被注释的内容不会被go编译器所编译

  1. 行注释://
//fmt.Println("jack")
  1. 块注释:/**/
/*
fmt.Println("tom")
fmt.Println("jucy)
*/

注意:块注释不能嵌套

③编程风格及API地址

  • 编程风格
  1. 官方推荐使用行注释
  2. 代码中需要有正确的缩进和空白【可以使用gofmt进行格式化】
    在这里插入图片描述
  3. 运算符两边加空格
  4. 花括号只能在行尾
//花括号只有这一种写法,go开发者认为应当统一风格
func main(){

}
  1. 一行最多不能超过80个字符
    在这里插入图片描述
  • API地址

官网:https://golang.org

在这里插入图片描述
在这里插入图片描述

  • Golang 官方标准库 API 文档, https://golang.org/pkg 可以查看 Golang 所有包下的函数和使用

Golang中导包原理:
在这里插入图片描述

  • 离线版(大家可以自行百度下载一个API)

参考:https://blog.csdn.net/Mr_XiMu/article/details/124671852

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

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

相关文章

30天学会《Streamlit》(9)

30天学会《Streamlit》是一项编码挑战,旨在帮助您开始构建Streamlit应用程序。特别是,您将能够: 为构建Streamlit应用程序设置编码环境 构建您的第一个Streamlit应用程序 了解用于Streamlit应用程序的所有很棒的输入/输出小部件 第9天 - …

超高精度PID控制器的特殊功能(4)——分程控制功能及其应用

摘要:分程控制作为一种典型的复杂控制方法之一,常用于聚合反应工艺、冷热循环浴、TEC半导体温度控制、动态平衡法的真空和压力控制等领域。为快速和便捷的使用分程控制,避免采用PLC时存在的控制精度差和使用门槛高等问题,本文介绍…

pyqt6+vtk

这里用PyQt6vtk9.2.6 pip install PyQt6 pyqt6-tools vtk这里拉了一个水平布局 然后水平布局中加入QWidget,object name改为vtkWidget 右键Promote Widgets Promoted class name: QVTKRenderWindowInteractor Header file: vtkmodules.qt.QVTKRenderWindowInterac…

文章改写神器在线-AI续写文章生成器

AI续写生成器 AI续写生成器是一种利用人工智能技术的创意工具,能够提高写作效率,为营销推广带来全新的可能性。无论你是写手、广告人员还是市场营销人员,这个工具都能够有效地解决你在写作中遇到的难题。 在内容创作行业中,原创…

Amazon Linux2部署安装Jenkins

先决条件 服务器配置要求 256 MB of RAM 1 GB of drive space (although 10 GB is a recommended minimum if running Jenkins as a Docker container) 需要部署安装JDK环境部署安装的Jenkins版本为Version 2.400 部署安装JDK 1. 下载JDK软件包 wget https://corretto.aws/…

Altium Designer借助嘉立创添加PCB封装和3D模型

目录 引言打开立创专业版EDA,建立项目从立创商城找到器件编码添加PCB封装导出和修改3D封装 引言 由于使用Altium Designer的频率并不是特别高,所以每一次使用总是得东跌西撞的才回忆起一些使用步骤。因此,想在这里记录一下Altium Designer借…

【mysql】binlog日志

目录 1.1 基本说明1.2 binlog日志格式1.3 binlog日志查看1.4 binlog日志删除1.5 binlog操作示例 1.1 基本说明 1.全称binary log,二进制日志 2.记录了所有的DDL语句(Data Definition Language数据定义语言)和DML语句(Data Manipul…

Java多线程中sleep()方法和wait()方法的区别

目录 具体而言 ,sleep()方法与wait()方法的区别主要表现在以下几个方面: 引申:sleep()方法和yield()方法有什么区别? 常见面试题&a…

如何衡量算法的效率?时间复杂度空间复杂度

本篇博客会讲解如何衡量一个算法的效率。衡量算法的效率,主要有2个维度,分别是:时间复杂度和空间复杂度。 时间复杂度用来衡量算法的时间效率。时间复杂度越低,算法的耗时越短,效率则越高。空间复杂度用来衡量算法的空…

Space Cloud updated Crack

Space Cloud updated Crack Space Git Flow-对于实践连续发布周期的开发团队来说,在协调团队成员、建立流程和集成多个工具时,建立交付流可能需要付出巨大努力。为了更容易做到这一点,引入了JetBrains Space Git流,这是一个完整的…

同一热卖商品的高并发写难题 - Lua脚本扣减库存方案

目录 一、Mysql高并发写时的行锁难题 二、Redis的相关命令 1. WATCH命令 2. EVAL与EVALSHA命令 三、SpringBoot执行Lua脚本代码示例 1. 依赖包 2. Lua脚本sku.lua 3. 加载Lua脚本 4. 执行Lua脚本 四、参考资料 一、Mysql高并发写时的行锁难题 通常来说,秒…

百度大模型ERNIE3.0

大模型对比 文心全景图 ERNIE 3.0

《Java8实战》第9章 重构、测试和调试

9.1 为改善可读性和灵活性重构代码 Lambda 表达式可以帮助我们用更紧凑的方式描述程序的行为。 9.1.1 改善代码的可读性 可读性非常主观,但是通俗的理解就是“别人理解这段代码的难易程度”。改善可读性意味着你要确保你的代码能非常容易地被包括自己在内的所有…

【Java|基础篇】方法的定义使用、重载以及递归

文章目录 1.什么是方法2.方法的定义和使用返回值类型形参与实参方法执行过程 3.⭐方法的重载4.递归5. 总结 1.什么是方法 方法就是组织好的,可重复使用的具有某种功能的特定代码块 (类似于函数) 在我们平时写代码时,如果遇到会经常使用的一些功能相同的代码时,我们就可以把这段…

在线考试系统学员答题批改日志,实战练习

一、环境要求 sandbox-hdp 2.6.4 或同等版本自建的HadoopHiveSparkHBase 开发环境。 二、数据描述 这是一份来自于某在线考试系统的学员答题批改日志,日志中记录了日志生成时间,题目难度系数,题目所属的知识点 ID,做题的学生 ID&#xff0…

Oracle的学习心得和知识总结(二十一)|Oracle数据库可插拔数据库PDB的创建及删除

目录结构 注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下: 1、参考书籍:《Oracle Database SQL Language Reference》 2、参考书籍:《PostgreSQL中文手册》 3、EDB Postgres Advanced Server User Gui…

华为OD机试(Java),5键键盘的输出

一、题目描述 有一个特殊的5键键盘,上面有a,ctrl-c,ctrl-x,ctrl-v,ctrl-a五个键。 a键在屏幕上输出一个字母a;ctrl-c将当前选择的字母复制到剪贴板;ctrl-x将当前选择的字母复制到剪贴板&#…

极氪要上市,吉利“基因改造”成功

文|智能相对论 作者| 落笔 当越来越多的国产新锐品牌入局新能源汽车市场,晚半拍的极氪却用较短的时间实现了主观逆袭。据统计,极氪001自问世以来便接连斩获消费者欢心,2022年极氪001更是实现了全年交付71941台的战绩,且持续蝉联…

ASP音乐网站的设计与实现

本文阐述了音乐网站的设计与实现,本系统采用ASPSQL Sever 2000作为开发工具。前台主要实现歌曲的分类显示及分类查询、歌曲的在线试听及下载、会员注册、登录以及最新音乐的新闻介绍,并且还为用户提供了在线交流的平台等功能;后台主要用于数据…