Go语言基础语法(三)

Go语言基础语法详解

Go语言作为一门简洁高效的编程语言,以其独特的语法风格和并发支持成为开发者喜爱的语言之一。本文将带你逐步了解Go语言的基础语法,覆盖程序结构、变量与常量、数据类型以及运算符的使用,为深入学习Go语言奠定坚实的基础。

1. Go语言程序结构

一个Go语言程序的基础结构相对简单,通常由包声明、导入依赖包、函数组成。最基本的结构如下:

main 函数与包导入
go 复制代码
package main

import "fmt"  // 导入fmt包用于输入输出

func main() {
    fmt.Println("Hello, Go!")
}
  • package main:每个Go程序的入口点必须是 package main,这告诉编译器这是一个可执行的程序。
  • import "fmt":导入Go的标准库fmt,用来格式化输入输出。导入的包名称必须是双引号包围的包名,标准库包含众多常用包。
  • func main():Go程序的主入口函数,main函数没有参数,程序从这里开始执行。

2. 数据类型

Go是一门静态类型的语言,意味着每个变量的类型在编译时必须是已知的。Go支持多种数据类型,主要分为基本类型和复合类型。

基本类型
  • 整数 :包括有符号整数和无符号整数,分别有 intint8int16int32int64 及其对应的无符号版本 uintuint8 等。
  • 浮点数float32float64
  • 布尔值bool 类型,只有两个值 truefalse
  • 字符串string,表示Unicode字符序列。
go 复制代码
var i int = 10
var f float64 = 3.14
var b bool = true
var s string = "Hello"
复合类型
  • 数组:定长、同质元素序列。

    go 复制代码
    var arr [5]int = [5]int{1, 2, 3, 4, 5}
  • 切片:动态大小、同质元素的序列,类似动态数组。

    go 复制代码
    var slice []int = []int{1, 2, 3}
  • 结构体:一组字段的集合,类似类但没有继承。

    go 复制代码
    type Person struct {
        Name string
        Age  int
    }
  • 映射(map):键值对的无序集合。

    go 复制代码
    var m map[string]int = map[string]int{"one": 1, "two": 2}

3. 变量与常量

Go中的变量声明可以通过 var 关键字,也可以使用简洁的短变量声明。常量则使用 const 关键字。

var 声明变量

var 是 Go 中最常见的声明变量的方式,可以显式指定类型,也可以通过初始化推导类型。

go 复制代码
var a int    // 声明一个整型变量
var b string // 声明一个字符串变量
a = 10
b = "Go语言"
短变量声明 :=

Go支持在函数内使用 := 进行变量的简洁声明,编译器会自动推断变量类型:

go 复制代码
c := 20          // 声明并初始化整型变量
name := "Alice"  // 声明并初始化字符串变量

注意::= 只能在函数体内部使用,不能用于全局变量的声明。

常量 const

常量使用 const 关键字声明,常量的值在编译时确定,不可修改:

go 复制代码
const Pi = 3.14
const Greeting = "Hello, Go!"

常量只能是布尔值、数字、字符串类型。

4. 基本运算符

Go语言提供了丰富的运算符,涵盖了常见的算术运算、逻辑运算以及关系运算。

算术运算符

Go支持常见的算术运算符,如加减乘除、取余等:

运算符 描述
+ 加法
- 减法
* 乘法
/ 除法
% 取余
go 复制代码
x := 10
y := 3
fmt.Println(x + y)  // 输出: 13
fmt.Println(x - y)  // 输出: 7
fmt.Println(x * y)  // 输出: 30
fmt.Println(x / y)  // 输出: 3
fmt.Println(x % y)  // 输出: 1
逻辑运算符

逻辑运算符主要用于布尔值的组合:

运算符 描述
&& 逻辑与
|| 逻辑或
! 逻辑非
go 复制代码
a := true
b := false
fmt.Println(a && b)  // 输出: false
fmt.Println(a || b)  // 输出: true
fmt.Println(!a)      // 输出: false
关系运算符

用于比较两个值,返回布尔值:

运算符 描述
== 等于
!= 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
go 复制代码
x := 5
y := 10
fmt.Println(x == y)  // 输出: false
fmt.Println(x != y)  // 输出: true
fmt.Println(x > y)   // 输出: false
fmt.Println(x < y)   // 输出: true

扩展阅读:

相关推荐
潘多编程5 分钟前
Spring Boot分布式项目实战:装饰模式的正确打开方式
spring boot·分布式·后端
uhakadotcom7 分钟前
Apache SkyWalking:分布式系统的可观测性平台
后端·面试·github
小张-森林人8 分钟前
C#中,什么是委托,什么是事件及它们之间的关系
开发语言·c#
何似在人间57510 分钟前
JAVA实现动态IP黑名单过滤
java·开发语言·tcp/ip·nacos·黑名单过滤
uhakadotcom11 分钟前
RocketMQ:解密阿里巴巴都在用的高性能消息队列
后端·面试·github
uhakadotcom11 分钟前
Apache Beam:统一的大数据处理模型
后端·面试·github
uhakadotcom12 分钟前
Apache Superset:现代化数据分析与可视化平台
后端·面试·github
Lvan14 分钟前
程序员必看:两个思想优化90%的代码
java·后端
失业写写八股文15 分钟前
分布式事务深度解析:从理论到实践
分布式·后端·微服务
demonlg011216 分钟前
Go 语言标准库中log模块详细功能介绍与示例
开发语言·后端·云原生·golang