Go 语言入门指南:基础语法和常用特性解析 (1)基础语法|青训营

2023年 8月 23日 94.3k 0

前言

相比于几十年前就已成形的C/C++,和创造于世纪之交的Java,Go的出现相对较晚。它是在2007年末才开始被开发,至2009年11月开源,直到2012年才发布第一版。但如今,凭借着它简洁的语法、高效的开发效率和优越的并行性能,Go已经成为了各大公司后端开发的优先选择。在这样的趋势下,学习Go的技术栈,对于在后端方向的发展非常重要。本文将讲述Go的基础语法,以及一些常用的特性。

1. Go的安装

在Go的官网上,即可下载Go的安装包:go.dev/dl/ 。Go在多种主流操作系统上,包括Windows、MacOS、Linux等均有支持,在下载页面选择适配自己系统的安装包进行下载,并按照向导进行安装。

在Linux上安装的操作需要注意:

下载好Go的二进制包之后,将其解压到/usr/local目录

tar /usr/local -zxf go1.4.linux-amd64.tar.gz

之后需要添加Go的可执行目录到环境变量,直接在终端执行以下命令(暂时),或者将以下添加至.bashrc文件中(永久,添加后执行source ~/.bashrc以生效)

export PATH=$PATH:/usr/local/go/bin

2.Hello World!

新建一个目录,在其中新建源代码文件helloworld.go,内容如下:

package main  
  
import "fmt"  
  
func main() {  
   fmt.Println("Hello, World!")  
}

执行命令go run helloworld.go,就可以看到程序被执行,并输出:

Hello World!

第一个Go程序就大功告成了。
其中,package main声明文件所在的包名,表明该程序可以独立执行,每一个Go项目都要有名为main的包。若文件在其中一个子目录,则作为独立的包,包名为目录名(类似于Java)。

与Java、Python一样,外部依赖的引入通过import关键字声明。例如import "fmt"就是引用了fmt包,该包提供了Go的格式化输入输出。

func main()即为程序的主函数,在程序执行过程中最先执行,若有init()函数则先执行init。

fmt.Println()将参数的内容输出到控制台,并换行。

3. 数据类型

  • 布尔型(bool):true或者false。
  • 数字型:Go语言支持整数(int)、浮点数(float)和复数(complex)。按照位的大小细分为很多类型,位数作为后缀区分。整数支持8、16、32、64位,浮点数和复数支持32位和64位。此外,整数还支持无符号(uint)。
  • 字符串:顾名思义,和其他语言的字符串一样,不多赘述。
  • 其他派生类型:数组、指针、结构体、channel、函数等。

4. 变量声明

Go语言使用var关键字声明变量,可以一次声明多个变量:

var a int32
var b, c, d string

也可以直接对变量赋值,自行判断数据类型:

var a = 3

可以用赋值操作符简化:

a := 3

这样的变量声明方式,就为Go带来了如同Python一样的简洁语法。

5. 运算符、条件分支、循环

运算符与C基本相同。

而逻辑控制上,大部分语法也与C相同,但是有一点重要的不同:Go的条件表达式不加括号。

if ( a > 1 && b == 2) {
    return 0;
}

for(int i = 0; i < 6; i++){
    printf("%d\n", i);
}
if a > 1 && b == 2 {
    return
}

for i := 0; i < 6; i++ {
    fmt.Println(i)
}

Go只有for循环,但也可以后面跟单个表达式,实现C中的while循环。

6. 数组

Go 语言数组声明需要指定元素类型及元素个数,语法格式如下:

var arrayName [size]dataType

其中,arrayName 是数组的名称,size 是数组的大小,dataType 是数组中元素的数据类型。

以下定义了数组 balance 长度为 10 类型为 float32:

var balance [10]float32

另外,还可以使用 := 简短声明语法来声明和初始化数组:

numbers := [5]int{1, 2, 3, 4, 5}

访问数组中的元素,则与其他语言相似,通过下标索引来访问。

7. 结构体

结构体定义需要使用 type 和 struct 语句。struct 语句定义一个新的数据类型,结构体中有一个或多个成员。type 语句设定了结构体的名称。结构体的格式如下:

type struct_variable_type struct {
   member definition
   member definition
   ...
   member definition
}

此外,Go支持和C一样的指针操作,通过*定义指针及获取指针指向的内容,&为取地址符。

在后续文章中,将讲述Go的一些与其他语言不同的,一些进阶的常用特性。

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论