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

扩展阅读:

相关推荐
.生产的驴2 分钟前
SpringBoot 封装统一API返回格式对象 标准化开发 请求封装 统一格式处理
java·数据库·spring boot·后端·spring·eclipse·maven
火柴盒zhang3 分钟前
websheet之 编辑器
开发语言·前端·javascript·编辑器·spreadsheet·websheet
景天科技苑10 分钟前
【Rust】Rust中的枚举与模式匹配,原理解析与应用实战
开发语言·后端·rust·match·enum·枚举与模式匹配·rust枚举与模式匹配
阿让啊16 分钟前
C语言中操作字节的某一位
c语言·开发语言·数据结构·单片机·算法
椰羊~王小美21 分钟前
LeetCode -- Flora -- edit 2025-04-25
java·开发语言
孞㐑¥1 小时前
C++11介绍
开发语言·c++·经验分享·笔记
追逐时光者1 小时前
MongoDB从入门到实战之Docker快速安装MongoDB
后端·mongodb
旦莫1 小时前
Python 教程:我们可以给 Python 文件起中文名吗?
开发语言·python
方圆想当图灵1 小时前
深入理解 AOP:使用 AspectJ 实现对 Maven 依赖中 Jar 包类的织入
后端·maven
豌豆花下猫1 小时前
Python 潮流周刊#99:如何在生产环境中运行 Python?(摘要)
后端·python·ai