Go语言的基础语法以及变量和常量

简介: Go语言的基础语法以及变量和常量

基础语法


行分隔符


在Go程序中,一般一行就是一个语句,不像Java等可以在一行写多个语句一样,而且最后也不需要用";"来结尾。


例如,下列写法就是一个Go语句

fmt.Println("HelloWorld")


注释

注释也分为单行注释和多行注释,单行注释以双斜线"//"开头,例如//单行注释;

多行注释通常以"/*"开头,以"*/"结尾,例如:

/*
    多行注释
    多行注释
    多行注释
*/


标识符

标识符通常用来对变量、类型等程序实体进行命名。一个标识符实际上就是一个或者多个字母、数字、下划线组成的字符串序列,并且要求第一个字符不能是数字或者GO语言的关键字。

变量

Go语言中的变量可以分为以下几类:


数值型变量:包括整型(int、int8、int16、int32、int64)、浮点型(float32、float64)和复数型(complex64、complex128)。


字符串型变量:用于存储字符串类型的数据,使用 string 类型。


布尔型变量:用于存储布尔类型的数据,只有 true 和 false 两个值,使用 bool 类型。


指针型变量:用于存储内存地址,使用 *data_type 类型。


结构体变量:用于存储多个变量的组合,使用 struct 类型。


接口型变量:用于存储实现了某个接口的类型,使用 interface 类型。


函数变量:用于存储函数,使用 func 类型。


声明

Go语言是一种静态强类型语言,所以变量有明确的类型。变量的声明一般形式是使用var关键字,形式如下:

var age int


其中,var是变量声明的关键字,age是变量名,int是变量的类型。


当一个变量被声明后,如果不对其进行赋值,则系统会自动赋予它该类型的0值或者空值。例如int类型默认为0、float类型默认为0.0、bool类型默认为false,string类型默认为空字符串,指针类型默认为nil。


(1)标准声明

变量的标准声明格式为

var 变量名 变量类型


变量声明以关键字var开头,中间为变量名,最后为变量类型,无需分号结尾

(2)批量声明

批量声明是一个更加高效的变量声明方法,即使用关键字var和括号将一组变量放在一起。格式如下:

var {
    name string
    age int
    gender string
}


(3)简短声明

除了var关键字以外,还可以使用简短的变量定义和初始化。格式如下:

变量名 := 表达式


当使用简短声明时有三点需要注意:

1)只能用来定义变量

2)不能提供数据类型

3)只能在函数体内部使用,不能用来定义全局变量


赋值

(1)给一个变量赋值

var name string = "zxm"


这里需要说明,变量类型string一般可以省略不写,因为系统会自动进行判断变量类型

(2)给多个变量赋值

var {
    name string = "zxm"
    age int = 18
    gender string = "男"
}


这里的变量类型也可以省略。

作用域

(1)局部变量

表示在函数体内声明的变量称为局部变量,它的作用域只在函数体内,它的参数的返回值的变量也是局部变量。


(2)全局变量

表示在函数体外声明的变量称为全局变量,它的作用域可以在整个包内使用,也可以在任何一个函数中使用。

常量

Go语言中的常量可以分为以下几类


数值型常量:与数值型变量类似,包括整型、浮点型和复数型常量。

字符串型常量:与字符串型变量类似,用于存储字符串类型的数据。

布尔型常量:与布尔型变量类似,用于存储布尔类型的数据。

iota 常量:特殊的常量类型,用于枚举,从 0 开始自增。


声明


常量是一种特殊类型的变量,其值在定义后不能被修改。在 Golang 中,常量可以使用 const 关键字进行定义

(1)标准声明

常量的标准声明格式为

const 常量名 = 常量值


(2)批量声明

1. const {
2.     a = 3.14
3.     b
4.     c
5. }

这里将常量a赋值3.14,b和c没有进行赋值,就会自动按照上面语句" a = 3.14"的值进行赋值,所以b和c也等于3.14


iota


常量声明可以使用常量生成器iota进行初始化。iota用于生成一组以相似规则初始化的常量,但是不需要每行都写一遍初始化表达式。在一个const声明语句中,在第一个声明的常量所在的行,iota会被置为0,然后每有一个常量声明的行iota的值就加1。

相关文章
|
17天前
|
Go 开发工具
百炼-千问模型通过openai接口构建assistant 等 go语言
由于阿里百炼平台通义千问大模型没有完善的go语言兼容openapi示例,并且官方答复assistant是不兼容openapi sdk的。 实际使用中发现是能够支持的,所以自己写了一个demo test示例,给大家做一个参考。
|
17天前
|
程序员 Go
go语言中结构体(Struct)
go语言中结构体(Struct)
92 71
|
16天前
|
存储 Go 索引
go语言中的数组(Array)
go语言中的数组(Array)
100 67
|
17天前
|
存储 Go
go语言中映射
go语言中映射
32 11
|
9天前
|
Go 数据安全/隐私保护 UED
优化Go语言中的网络连接:设置代理超时参数
优化Go语言中的网络连接:设置代理超时参数
|
7月前
|
开发框架 安全 中间件
Go语言开发小技巧&易错点100例(十二)
Go语言开发小技巧&易错点100例(十二)
82 1
|
20天前
|
开发框架 Go 计算机视觉
纯Go语言开发人脸检测、瞳孔/眼睛定位与面部特征检测插件-助力GoFly快速开发框架
开发纯go插件的原因是因为目前 Go 生态系统中几乎所有现有的人脸检测解决方案都是纯粹绑定到一些 C/C++ 库,如 OpenCV 或 dlib,但通过 cgo 调用 C 程序会引入巨大的延迟,并在性能方面产生显著的权衡。此外,在许多情况下,在各种平台上安装 OpenCV 是很麻烦的。使用纯Go开发的插件不仅在开发时方便,在项目部署和项目维护也能省很多时间精力。
|
1月前
|
Go 数据安全/隐私保护 开发者
Go语言开发
【10月更文挑战第26天】Go语言开发
40 3
|
1月前
|
Java 程序员 Go
Go语言的开发
【10月更文挑战第25天】Go语言的开发
32 3
|
4月前
|
JSON 中间件 Go
go语言后端开发学习(四) —— 在go项目中使用Zap日志库
本文详细介绍了如何在Go项目中集成并配置Zap日志库。首先通过`go get -u go.uber.org/zap`命令安装Zap,接着展示了`Logger`与`Sugared Logger`两种日志记录器的基本用法。随后深入探讨了Zap的高级配置,包括如何将日志输出至文件、调整时间格式、记录调用者信息以及日志分割等。最后,文章演示了如何在gin框架中集成Zap,通过自定义中间件实现了日志记录和异常恢复功能。通过这些步骤,读者可以掌握Zap在实际项目中的应用与定制方法
156 1
go语言后端开发学习(四) —— 在go项目中使用Zap日志库