Go-安装与基础语法

news2025/2/24 21:06:02

TOC

1. Go 安装与环境变量

1.1 下载

需要从Go语言的官方网站下载适合你操作系统的Go语言安装包。Go语言支持多种操作系统,包括Windows、Linux和Mac OS。
在这里插入图片描述

对于Windows用户,下载.msi文件,然后双击该文件,按照提示进行安装即可。
对于Linux和Mac OS用户,可以下载.tar.gz文件,然后在终端中使用以下命令进行安装:

tar -C /usr/local -xzf go$VERSION.$OS-$ARCH.tar.gz

这里,$VERSION表示下载的Go语言版本,$OS表示操作系统,$ARCH表示架构。

1.2 设置环境变量

安装Go语言后,需要设置环境变量。环境变量是操作系统用来指定运行环境的一种参数,例如,系统会通过PATH环境变量来查找可执行文件。
对于Go语言,需要设置GOROOTGOPATH两个环境变量。
GOROOT是Go语言安装的位置。如果按照默认设置进行安装,那么Go语言通常会被安装在/usr/local/go(Linux和Mac OS)或C:\Go(Windows)。
GOPATH是工作区位置。工作区是存放Go语言代码的地方,它应该包含三个子目录:src(源代码)、pkg(包文件)和bin(可执行文件)。
可以通过以下命令设置这两个环境变量:

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

这些命令将GOROOT设置为Go语言的安装位置,将GOPATH设置为工作区,然后将这两个位置的bin子目录添加到PATH环境变量,使得可以直接运行这些目录中的可执行文件。
使用

go version

验证是否安装成功:
在这里插入图片描述

2. Go 基本语法

2.1 Go关键字

关键词说明关键词说明关键词说明
break用于中断当前循环或开关语句的执行。default用于开关语句中的默认情况。func用于声明一个函数或方法。
interface用于声明一个接口类型,定义了一组方法的集合。select用于选择可以进行通信的多个通道操作。case用于开关语句中的每个情况。
defer用于延迟执行一个函数调用,通常用于释放资源或处理错误。go用于启动一个新的协程(goroutine),以并发执行函数或方法。map用于声明一个映射(字典)类型,用于存储键值对的无序集合。
struct用于声明一个结构体类型,用于组织和存储多个字段的集合。chan用于声明一个通道类型,用于在协程之间进行通信。else用于在if语句中,当条件为假时执行的代码块。
goto用于无条件地转移到程序中的另一个标签。package用于声明一个包,包含一组相关的Go语言源文件。switch用于根据表达式的值选择不同的执行路径。
const用于声明一个常量,其值在编译时确定且不可更改。fallthrough用于开关语句中的穿透下一个情况。if用于条件判断,根据条件的真假执行不同的代码块。
range用于迭代数组、切片、映射或字符串等可迭代对象的元素。type用于声明一个自定义类型,可以是基本类型的别名或结构体等复合类型。for用于循环执行一段代码块,可以用于迭代、条件判断等。
continue用于跳过当前循环的剩余代码,并开始下一次循环。import用于导入其他包,以便在当前包中使用其功能。return用于从函数中返回结果。
var用于声明一个变量,可以是任何类型。

Go的关键字并不是很多,只有25个关键字。

2.2 数据类型

数据类型说明数据类型说明
bool布尔类型,表示真或假。int整数类型,表示整数值。
int88位有符号整数类型,表示范围为-128到127的整数。int1616位有符号整数类型,表示范围为-32768到32767的整数。
int3232位有符号整数类型,表示范围为-2147483648到2147483647的整数。int6464位有符号整数类型,表示范围为-9223372036854775808到9223372036854775807的整数。
uint88位无符号整数类型,表示范围为0到255的整数。uint1616位无符号整数类型,表示范围为0到65535的整数。
uint3232位无符号整数类型,表示范围为0到4294967295的整数。uint6464位无符号整数类型,表示范围为0到18446744073709551615的整数。
float3232位浮点数类型,表示范围为IEEE-754 32位浮点数。float6464位浮点数类型,表示范围为IEEE-754 64位浮点数。
complex6464位复数类型,由两个32位浮点数表示实部和虚部。complex128128位复数类型,由两个64位浮点数表示实部和虚部。
string字符串类型,表示一串字符。runeUnicode字符类型,表示一个Unicode码点。
byte字节类型,表示一个8位无符号整数。uintptr无符号整数类型,用于存储指针的整数值。

2.3 变量&常量

变量:
使用var关键字声明一个变量:

var a int

这行代码声明了一个名为a的变量,类型为int。如果没有给变量赋值,它将被初始化为零值。对于int类型,零值是0。
也可以在声明变量的同时给它赋值:

var a int = 10

如果在声明变量的同时赋值,Go语言可以自动推断变量的类型,所以可以省略类型:

var a = 10

如果要声明多个变量,可以这样做:

var a, b, c int
var (
    a int
    b float64
    c string
)

在函数内部,你可以使用更简洁的:=操作符声明并初始化变量(仅限函数内部):

a := 10

常量:
使用const关键字声明一个常量:

const PI float64 = 3.141592653589793

这行代码声明了一个名为PI的常量,类型为float64,值为3.141592653589793。一旦声明,不能改变一个常量的值。

const (
    PI = 3.141592653589793
    E  = 2.718281828459045
)

一次性声明多个.

注意,尽管可以省略常量的类型,但是Go语言并不会自动推断常量的类型。如果省略了常量的类型,那么这个常量可以被认为是任何类型,只要它是合法的。
例如,可以将上面的PI常量用在任何需要float64或int类型的地方。

2.4 运算符

运算符含义举例
++ --自增和自减a++ a--
+ - ! ^ * & <- &^一元运算符+a -a !a ^a *a &a <-ch &^a
* / % << >> & &^乘法、除法、取余、左移、右移、位与、位清空a*b a/b a%b a<<b a>>b a&b a&^b
+ - | ^加法、减法、位或、位异或a+b a-b a|b a^b
== != < <= > >=等于、不等于、小于、小于等于、大于、大于等于a==b a!=b a<b a<=b a>b a>=b
<-接收操作符v <- ch
&&逻辑与a && b
||逻辑或a || b
= += -= *= /= %= <<= >>= &= &^= |= ^=赋值、加等、减等、乘等、除等、取余等、左移等、右移等、位与等、位清空等、位或等、位异或等a=b a+=b a-=b a*=b a/=b a%=b a<<=b a>>=b a&=b a&^=b a|=b a^=b

2.5 流程控制

流程控制说明流程控制说明
switch用于根据表达式的值选择不同的执行路径。select用于在多个通道操作中选择一个可执行的操作。
for用于循环执行一段代码块,可以用于迭代、条件判断等。for-range用于迭代数组、切片、映射或字符串等可迭代对象的元素。
if用于条件判断,根据条件的真假执行不同的代码块。break用于中断当前循环或开关语句的执行。
continue用于跳过当前循环的剩余代码,并开始下一次循环。标签用于在循环或开关语句中标记一个位置,以便在其他地方进行跳转。
goto用于无条件地转移到程序中的另一个标签。

3. HellowWorld

创建一个hello.go的文件,不需要IDE,使用文本编辑器就行。
写入如下代码:

package main

import "fmt"

func main() {
	fmt.Println("hello world")
}

和其他编程语言相同,Go也是main作为主入口,而且需要注意,必须是package mainmain是主入口。
使用go run hello.go运行:
在这里插入图片描述

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

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

相关文章

【电路电子学】7天速通攻略+笔记

7天是 看视频记笔记刷题的总时长&#xff0c;时间紧迫的同学可以看情况进行缩减。个人认为做题&#xff0c;尤其是解析齐全的题最重要&#xff01; 我校所用教材 《电路与电子学基础》唐胜安 复习总流程 所用材料&#xff08;都可自行找到免费资源&#xff09; 视频知识点讲…

如何用Python虚拟环境virtualenv轻松管理多个项目?你想要的都在这里!

目录 Python 虚拟环境安装 Python 虚拟环境能够实现多环境隔离。 虚拟环境的应用场景 例如&#xff0c;在一台电脑上开发涉及多种技术栈的项目时&#xff0c;不同技术底层依赖可能存在冲突。这种情况下&#xff0c;解决了某个项目的问题可能会影响到其他项目的运行&#xff0c…

数据洞察力,驱动企业财务变革

我们不得不面对一个现实&#xff0c;就是数据量的剧增。加上大部分企业并不愿意删除历史数据&#xff0c;以防未来预测分析时需要&#xff0c;这造成数据就像一个雪球&#xff0c;越滚越大。然而&#xff0c;过多的数据和数据不足一样会成为企业发展和理解分析的障碍。从海量数…

动态规划part04 416. 分割等和子集

01背包问题 二维 代码随想录 视频讲解&#xff1a;带你学透0-1背包问题&#xff01;| 关于背包问题&#xff0c;你不清楚的地方&#xff0c;这里都讲了&#xff01;| 动态规划经典问题 | 数据结构与算法_哔哩哔哩_bilibili 01背包问题 一维 代码随想录 视频讲解&#xff1a;带…

08、Kafka ------ 消息存储相关的配置-->消息过期时间设置、查看主题下的消息存活时间等配置

目录 消息存储相关的配置★ 消息的存储介绍★ 消息过期时间及处理方式演示&#xff1a;log.cleanup.policy 属性配置 ★ 修改指定主题的消息保存时间演示&#xff1a;将 test2 主题下的消息的保存时间设为10个小时1、先查看test2主题下的配置2、然后设置消息的保存时间3、然后再…

2024/1/14周报

文章目录 摘要Abstract文献阅读题目问题与创新方法A.CEMDAN方法B.LSTM网络C. CEEMDAN-LSTM模型 实验过程数据集与数据预处理参数设置评价指标和参数 实验结果 深度学习GRUGRU前向传播GRU的训练过程 总结 摘要 本周阅读了一篇基于CEEMDAN-LSTM的金融时间序列预测模型的文章&…

Spark---RDD(Key-Value类型转换算子)

文章目录 1.RDD Key-Value类型1.1 partitionBy1.2 reduceByKey1.3 groupByKeyreduceByKey和groupByKey的区别分区间和分区内 1.4 aggregateByKey获取相同key的value的平均值 1.5 foldByKey1.6 combineByKey1.7 sortByKey1.8 join1.9 leftOuterJoin1.10 cogroup 1.RDD Key-Value…

通过代理连接sftp

通过nginx代理连接sftp 1.问题描述2.代码实现3.nginx配置3.1 创建sftp.stream文件3.2 修改nginx配置 4.重启nginx生效 1.问题描述 问题是这样的。我们现在需要在微服务所在内网的A机器连接到外网的sftp&#xff0c;但是网络又不能直接到达。然后A机器到B机器是通过的&#xff…

设计模式之策略模式【行为型模式】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档> 学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某…

新手入门:软件在测试过程中可能出现哪些问题?走,去看看~

对于很多测试新手来说&#xff0c;想要把自己的测试技术练得更精进&#xff0c;扎实自己的理论知识是必不可少的一门功课。下面&#xff0c;我们就一起来复习一下&#xff0c;那些让我们一知半解或者记不全的理论知识吧。 01 什么是软件测试&#xff1f; 最老套&#xff0c;但…

不要再搞混标准化与归一化啦,数据标准化与数据归一化的区别!!

数据标准化与归一化 1. 数据的标准化&#xff08;Standardization&#xff09;&#xff1a;2. 数据的归一化&#xff08;Normalization&#xff09;&#xff1a;总结&#xff08;数据标准化和数据归一化的不同之处和相同之处&#xff09; 1. 数据的标准化&#xff08;Standardi…

【数据结构】二叉树问题总结

目录 1.二叉树前序遍历&#xff0c;中序遍历和后序的实现 2.层序遍历 3.求二叉树中的节点个数 4.求二叉树中的叶子节点个数 5.求二叉树的高度 6.求二叉树第k层节点个数 7.二叉树查找值为x的节点 8.单值二叉树 9.二叉树最大深度 10.翻转二叉树 11. 检查两颗树是否相同…

【Linux实用篇】Linux常用命令(2)

目录 1.3 拷贝移动命令 1.3.1 cp 1.3.2 mv 1.4 打包压缩命令 1.5 文本编辑命令 1.5.1 vi&vim介绍 1.5.2 vim安装 1.5.3 vim使用 1.6 查找命令 1.6.1 find 1.6.2 grep 1.3 拷贝移动命令 1.3.1 cp 作用: 用于复制文件或目录 语法: cp [-r] source dest ​ 说明: …

数据分析概述2(详细介绍机器学习

目录 1.名词解释&#xff1a;1.1算法和模型1.2参数和超参数 2.基础算法&#xff1a;3.高级算法&#xff1a;4.数据准备5.常用python包小结&#xff1a; 1.名词解释&#xff1a; 1.1算法和模型 算法&#xff1a;用于训练模型的方法&#xff0c;分为有监督学习、无监督学习、半…

Centos7安装K8S

Centos7安装K8S 安装过程中没有出现的错误可以往下 根据以前一些博主写的博客&#xff0c;在小阳翻了不下几十篇博客之后&#xff0c;我果断是放弃了&#xff0c;于是找到了官网地址&#xff0c;然后也有坑 1. 关闭防火墙 systemctl stop firewalld systemctl disable firew…

算法通关村番外篇-LeetCode编程从0到1系列四

大家好我是苏麟 , 今天带来算法通关村番外篇-LeetCode编程从0到1系列四 . 矩阵 1672. 最富有客户的资产总量 描述 : 给你一个 m x n 的整数网格 accounts &#xff0c;其中 accounts[i][j] 是第 i​​​​​ 位客户在第 j 家银行托管的资产数量。返回最富有客户所拥有的 资产…

【UEFI基础】EDK网络框架(IP4)

IP4 IP4协议说明 IP全称Internet Protocol&#xff0c;它属于网络层&#xff0c;对其下各种类型的数据链路层进行了包装&#xff0c;这样网络层可以跨越不同的数据链路&#xff0c;即使是在不同的数据链路上也能实现两端节点之间的数据包传输。 IP层的主要作用就是“实现终端…

java应用CPU过高查找原因

用top查到占用cpu最高的进程pid 根据进程ID找到占用CPU高的线程 ps -mp 60355 -o THREAD,tid | sort -r 用 printf "%x \n" 将tid换为十六进制&#xff1a;xid printf "%x \n" 6036 根据16进制格式的线程ID查找线程堆栈信息 jstack 60355 |grep ebcb -A…

Fiddler怎么抓请求做接口

第一步:安装fiddler 可以在官网下载最新版本 VIP小伙伴可以在课前准备下载,如果已经安装,请忽略 打开fiddler开始抓取测试对象的请求,以教管系统登录为例 打开fiddler,准备开始抓取,清空会话,开启抓取状态,因为fiddler默认抓取http协议,所以这里不需要设置什么。 打开系统登…

Windows项目部署流程

一、部署前需要的工作 ①配置环境变量&#xff1a;将所需的软件和工具的安装路径添加到系统的环境变量中&#xff0c;以便在命令行中可以直接使用。 ②部署项目文件&#xff1a;将项目的文件和代码复制到服务器上的指定目录中&#xff0c;例如Web服务器的网站根目录。 ③配置…