Go语言基础语法(三)

embedded/2024/10/18 22:53:45/

Go语言基础语法详解

在这里插入图片描述

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

1. Go语言程序结构

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

main 函数与包导入
package mainimport "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字符序列。
var i int = 10
var f float64 = 3.14
var b bool = true
var s string = "Hello"
复合类型
  • 数组:定长、同质元素序列。

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

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

    type Person struct {Name stringAge  int
    }
    
  • 映射(map):键值对的无序集合。

    var m map[string]int = map[string]int{"one": 1, "two": 2}
    

3. 变量与常量

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

var 声明变量

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

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

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

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

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

常量 const

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

const Pi = 3.14
const Greeting = "Hello, Go!"

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

4. 基本运算符

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
逻辑运算符

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

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

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

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

扩展阅读:

  • Go语言官方网站
  • A Tour of Go - Go语言官方交互式教程
  • Effective Go - Go代码风格指南

http://www.ppmy.cn/embedded/128575.html

相关文章

Linux 磁盘配置文件 /etc/fstab 详解

fstab (/etc/fstab) 是linux下比较重要的配置文件&#xff0c;它包含了系统在启动时挂载文件系统和存储设备的详细信息。 简介 任何硬件设备连接后&#xff0c;操作系统使用硬件&#xff0c;即需要挂载。windows只不过是自动“挂载”了&#xff0c;linux需要手动自己搞。在Lin…

深入理解Python中的字符串:str()、字符提取、replace()替换及内存分析

链接&#xff1a;https://pan.quark.cn/s/136346367baa 在Python中&#xff0c;字符串是一种非常重要的数据类型。掌握如何使用​​str()​​函数、字符提取、字符串替换以及内存管理将有助于编写更高效的代码。本文将详细探讨这些概念&#xff0c;并提供示例代码和运行结果。…

MySQL-03.概述-数据模型SQL简介

1.MySQL数据模型 当安装好MySQL后&#xff0c;我们的计算机中就已经有了一个数据库&#xff0c;就是mysql&#xff0c;里面用来存储该数据库的数据。我们也可以再创建一个数据库。里面用来存储其他的数据表&#xff0c;而数据表中存储的就是我们要存储的数据。表的存在形式是磁…

微服务之间是如何独立通讯的?

前言 微服务架构是一种将一个应用程序拆分成多个小型、独立的服务的架构。在微服务架构中&#xff0c;各个服务之间需要进行通信来完成数据交互和业务处理。本文将详细介绍微服务之间如何独立通信的。 微服务之间独立通讯主要依靠定义清晰的API协议、使用轻量级交互机制、以及…

基于Redis实现的延迟队列

1. 适用场景 日常开发中&#xff0c;我们经常遇到这样的需求&#xff0c;在某个事件发生后&#xff0c;过一段时间做一个额外的动作&#xff0c;比如 拼单&#xff0c;如果2小时未能成单&#xff0c;取消拼单下单&#xff0c;30分钟内未支付&#xff0c;取消订单 之前的我们的…

Java 小游戏《超级马里奥》

文章目录 一、效果展示二、代码编写1. 素材准备2. 创建窗口类3. 创建常量类4. 创建动作类5. 创建关卡类6. 创建障碍物类7. 创建马里奥类8. 编写程序入口 一、效果展示 二、代码编写 1. 素材准备 首先创建一个基本的 java 项目&#xff0c;并将本游戏需要用到的图片素材 image…

SpringBoot框架在购物推荐网站设计中的创新应用

3系统分析 3.1可行性分析 通过对本东大每日推购物推荐网站实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本东大每日推购物推荐网站采用JAVA作为开发语言&…

农合生活平台用户量已突破5万人大关。

回顾走来的这一路&#xff0c;农合生活一直在成长的路上&#xff0c;从未停歇。 2024年1月&#xff0c;农合生活小程序1.0推出&#xff0c;上线1个月GMV破百万&#xff1b; 2024年4月&#xff0c;农合生活APP上线&#xff0c;注册用户破万&#xff1b; 2024年4月&#xff0c;…