Go-安装与基础语法

2024/01/13 go

Go-安装与基础语法

1. Go 安装与环境变量

1.1 下载

需要从Go语言的官方网站下载适合你操作系统的Go语言安装包。Go语言支持多种操作系统,包括Windows、Linux和Mac OS。 img.png

对于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

验证是否安装成功:
img_1.png

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 | 整数类型,表示整数值。 | | int8 | 8位有符号整数类型,表示范围为-128到127的整数。 | int16 | 16位有符号整数类型,表示范围为-32768到32767的整数。 | | int32 | 32位有符号整数类型,表示范围为-2147483648到2147483647的整数。 | int64 | 64位有符号整数类型,表示范围为-9223372036854775808到9223372036854775807的整数。 | | uint8 | 8位无符号整数类型,表示范围为0到255的整数。 | uint16 | 16位无符号整数类型,表示范围为0到65535的整数。 | | uint32 | 32位无符号整数类型,表示范围为0到4294967295的整数。 | uint64 | 64位无符号整数类型,表示范围为0到18446744073709551615的整数。 | | float32 | 32位浮点数类型,表示范围为IEEE-754 32位浮点数。 | float64 | 64位浮点数类型,表示范围为IEEE-754 64位浮点数。 | | complex64 | 64位复数类型,由两个32位浮点数表示实部和虚部。 | complex128 | 128位复数类型,由两个64位浮点数表示实部和虚部。 | | string | 字符串类型,表示一串字符。 | rune | Unicode字符类型,表示一个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运行:
img_2.png

Search

    Table of Contents