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 分钟前
SpringAI(GA):Nacos3下的分布式MCP
后端·架构·ai编程
Hockor14 分钟前
写给前端的 Python 教程三(字符串驻留和小整数池)
前端·后端·python
码农之王14 分钟前
记录一次,利用AI DeepSeek,解决工作中算法和无限级树模型问题
后端·算法
Wo3Shi4七15 分钟前
消息不丢失:生产者收到写入成功响应后消息一定不会丢失吗?
后端·kafka·消息队列
爱上语文16 分钟前
MyBatisPlus(3):常用配置
java·后端·mybatis
编程乐趣18 分钟前
C#实现Stdio通信方式的MCP Server
后端
程序猿本员20 分钟前
线程池精华
c++·后端
秋田君30 分钟前
深入理解JavaScript设计模式之闭包与高阶函数
开发语言·javascript·设计模式
袁煦丞37 分钟前
电子书阅读器界的"万能工具"Koodo Reader :cpolar内网穿透实验室第593个成功挑战
前端·后端·远程工作
懋学的前端攻城狮38 分钟前
深入浅出JVM-03:Java虚拟机垃圾回收机制详解
java·jvm·后端