设为首页 加入收藏

TOP

Go开始:Go基本元素介绍(一)
2023-09-09 10:25:24 】 浏览:128
Tags:开始 元素介

本文深入探讨了Go编程语言中的核心概念,包括标识符、关键字、具名函数、具名值、定义类型、类型别名、包和模块管理,以及代码块和断行。这些元素是构成Go程序的基础,也是编写高质量代码的关键。

关注TechLeadCloud,分享互联网架构、云服务技术的全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。

在Go编程中,代码元素是构建软件的基础。本文旨在深入探讨Go语言中的各种代码元素,包括函数、变量、类型和更多。我们还会涉及如何通过包(package)来组织这些元素,以及Go的关键字和标识符规则。

file

标识符与关键字

file
在任何编程语言中,标识符和关键字都是核心概念,Go也不例外。标识符用于命名各种类型的代码元素,如变量、常量、函数等。关键字是预留的词汇,用于指示编程语言的特定操作。在本部分中,我们将详细介绍Go语言中的标识符和关键字。

Go中的标识符

标识符是用于标识各种程序实体(例如变量、函数、类型等)的名称。在Go中,标识符遵循以下规则:

  1. 必须以字母或下划线(_)开头。
  2. 可以包含字母、数字和下划线(_)。
  3. 区分大小写。

例如,以下都是有效的Go标识符:

name
_x9
go_variable
Count123

以下是无效的标识符:

9name // 以数字开头
!var // 包含非法字符

Go关键字

Go语言有25个预留的关键字,不能用作标识符。以下是这些关键字的列表以及它们的简要解释:

break       用于中断循环或switch语句
default     用于switch语句,表示默认情况
func        定义新的函数
interface   定义接口
select      用于处理多个通道
case        用于switch和select语句中的条件分支
defer       用于确保函数调用在程序执行结束后发生
go          用于并发执行
map         定义map类型
struct      定义结构体
chan        定义通道类型
else        用于if-else结构
goto        用于无条件跳转
package     定义包
switch      用于多路分支
const       定义常量或常量组
fallthrough 用于switch语句,使得控制流穿透到下一个case
if          条件语句
range       用于循环遍历数组、切片、字符串、map或通道
type        定义新的数据类型或类型别名
continue    跳过当前循环的剩余部分,开始下一次迭代
for         循环语句
import      导入包
return      从函数返回
var         声明变量

关键字示例

// 使用if-else关键字
if x > 10 {
    fmt.Println("x is greater than 10")
} else {
    fmt.Println("x is not greater than 10")
}

// 使用for关键字
for i := 0; i < 5; i++ {
    fmt.Println(i)
}

// 使用func和return关键字
func add(a int, b int) int {
    return a + b
}

具名的函数

file
在Go语言中,函数是一组执行特定任务的代码块,具名函数即是有名称的函数。本文将详细讨论Go中各类具名函数,包括常规函数、方法、高阶函数、匿名函数和闭包。

常规函数

这是最基础的函数类型。常规函数具有名称,可以接受参数,并且可以返回值。

代码示例

// 常规函数,接受两个int类型参数,返回int类型值
func add(a int, b int) int {
    return a + b
}

方法

在Go中,方法是一种特殊类型的函数,它作用于特定类型的变量,这个特定类型称为接收者。

代码示例

type Circle struct {
    Radius float64
}

// Circle类型的方法,计算圆的面积
func (c Circle) Area() float64 {
    return 3.14159 * c.Radius * c.Radius
}

高阶函数

高阶函数是接受函数作为参数或返回一个函数的函数。

代码示例

// 高阶函数,接受一个函数作为参数
func applyFunc(f func(int) int, value int) int {
    return f(value)
}

匿名函数与Lambda表达式

匿名函数是没有名字的函数,通常用于临时操作。

代码示例

// 匿名函数
add := func(a, b int) int {
    return a + b
}

闭包

闭包是一个函数值,它引用了其函数体之外的变量。简单来说,这个函数“记住了”这些引用的变量。

代码示例

// 闭包示例
func outer() func() int {
    x := 0
    return func() int {
        x++
        return x
    }
}

具名的值

file
在Go语言中,具名的值主要包括变量和常量。这些都是用于存储数据或代表特定值的标识符。接下来,我们会分别探讨变量和常量的各种类型和用法。

变量

变量是用于存储数据的容器。在Go中,变量的声明有多种方式,并且支持多种数据类型。

基本数据类型

Go支持一系列基本的数据类型,包括整数、浮点数、布尔值、字符串等。

var i int = 10          // 整数
var f float64 = 10.5    // 浮点数
var b bool = true       // 布尔值
var s string = "hello"  // 字符串

复合数据类型

Go还提供了数组、切片、映射(Map)、结构体(Struct)等复合数据类型。

var arr [3]int = [3]int{1, 2, 3}           // 数组
var slice []int = []int{1, 2, 3}           // 切片
var m map[string]int = map[string]int{"a": 1, "b": 2} // 映射
type Person struct {Name string; Age int}   // 结构体

指针类型

Go语言也支持指针,但不支持指针运算。

var p *int
i := 42
p = &i

常量

与变量不同,常量是不可变的值,一旦声明,就不能更改。

基本常量类型

const pi float64 = 3.14159  // 浮点数常量
const str string = "Hello"  // 字符串常量
const b bool = true         // 布尔常量

枚举常量

在Go中,可以使用iota关键字生成一组增量的整数常量,通常用于枚举。

type Weekday int
const (
    Sunday Weekday = iota
    Monday
    Tuesday
)

常量表达式

Go支持常量表达式,允许用于计算的常量值在编译期间进行运算。

const x = 2 + 3

定义类型和类型别名

Go语言不仅提供了一系列内建类型,还允许通过type关键字定义新的类型或为现有的类型创建别名。这两者在语法上可能相似,但在类型系统中有不同的意义和用途。本篇文章旨在详细介绍定义类型和类型别名的各种情况。

类型定义(Type Definition)

通过类型定义,你可以创建一个全新的类型,尽管它可能与某个现有类型在结构上完全相同。

基础类型

下面是如何定义一个基于int的新类型My

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Go Struct 下一篇Go 语言内置类型全解析:从布尔到..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目