Go 语言入门指南:基础语法和常用特性解析 | 青训营(上)

前言

在这篇文章之前发布了一篇较为简短的笔记,但是并没有被统计上,所以这次我重新整理和加深了理解,把Go语言的基础语法再次重发一遍。

Go语言基础学习

1、什么是Go语言

当谈论Go语言(或Golang)时,可以看到它有许多令人瞩目的特点,如下所述:

  1. 高性能、高并发: Go语言在设计之初就注重了高性能和高并发的特性。它的协程(goroutine)和通道(channel)机制使得并发编程变得更加简单且高效,能够充分利用多核处理器,提供了出色的并发性能。

  2. 语言简单、学习曲线平缓: Go语言的语法设计简洁,舍弃了一些复杂的语言特性,使得学习曲线相对平缓。它具有清晰的语法规则,使初学者能够快速上手,同时也能帮助开发者编写易于维护和理解的代码。

  3. 丰富的标准库: Go语言的标准库提供了众多的功能模块,涵盖了网络、文件操作、并发、加密等方面,这使得开发者能够轻松构建各种类型的应用程序,减少了对第三方库的依赖。

  4. 完善的工具链: Go语言提供了强大且易于使用的工具链,包括编译器、格式化工具、测试工具等。这些工具的高度集成使得开发、构建和测试代码变得更加便捷。

  5. 静态链接: Go语言的编译器会将程序的所有依赖打包成一个单独的可执行文件,这意味着您可以轻松地将应用程序部署到不同的环境中,而无需担心运行时的依赖问题。

  6. 快速编译: Go语言的编译速度非常快,这加速了代码的开发和迭代过程。这对于大型项目或需要频繁修改测试的应用程序来说尤其重要。

  7. 跨平台: Go语言在设计时考虑了跨平台性能,因此它能够轻松地在不同的操作系统上编译和运行,无需太多的修改。

  8. 垃圾回收: Go语言拥有先进的垃圾回收机制,它能够自动管理内存,减少了开发者因为内存管理而需要花费的精力。这使得开发者能够更专注于业务逻辑。

总之,Go语言以其高性能、并发支持、简洁的语法和丰富的标准库等特点,逐渐成为一种受欢迎的编程语言,适用于各种应用场景。

2、Go语言基础语法

2.1 "Hello World"

package main

import (
    "fmt"
)

func main() {
    fmt.Println("hello world")
}
  • package main:这是Go语言程序的一个重要部分,表明这个文件属于main包,是一个可执行程序的入口文件。

  • import "fmt"import语句用于导入需要使用的包。在这里,我们导入了fmt包,它提供了格式化输入和输出的功能。

  • func main():这是程序的主函数,是程序的入口。程序从这里开始执行。

  • fmt.Println("hello world"):这一行代码调用了fmt包中的Println函数,用于在终端输出一行文本。在这里,它输出了"hello world"。

通过运行这个简单的程序,我们可以在终端中看到输出:"hello world"。这个示例展示了Go语言的基本结构,是学习和入门的一个良好起点。

2.2 变量

示例:

package main

import (
    "fmt"
    "math"
)

func main() {

    var a = "initial"

    var b, c int = 1, 2

    var d = true

    var e float64 

    f := float32(e)

    g := a + "foo"

    fmt.Println(a, b, c, d, e, f) // initial 1 2 true 0 0
    fmt.Println(g)                   // initialapple

    const s string = "constant"
    const h = 500000000
    const i = 3e20 / h
    fmt.Println(s, h, i, math.Sin(h), math.Sin(i))
}

详细来说: Go语言里变量的声明为: 第一种:

var 变量名字 类型 = 表达式

其中“类型”和“表达式”可以省略其中一个 当省略“类型”时,表示根据初始化表达式来推导变量信息

var a = "initial" //a自动推导为字符串型

当省略“表达式”时,表示用零值去初始化该变量。 数值类型对应零值就是零 布尔类对应零值是false 字符串类型对应零值是空字符串 接口或引用类型变量对应的零值是nil

第二种: 简短变量声明

变量名:=等于值

也可以在=号后加上类型,进行强制类型转换 值得注意的是":="为声明语句,而"="是一个变量复制语句 例:

i, j = j, i //交换i和j的值

2.3 常量

常量的申明是把var改为const,在go语言里的常量,它没有确定的类型,而是根据使用的上下文来自动确定类型。

2.4 数据类型

Go语言将数据类型分为四类:基础类型、复合类型、引用类型和接口类型。包括基本类型(如整型、浮点型、布尔型、字符型)和复合类型(如数组、切片、映射、结构体、接口)下面是一些常用的数据类型及其取值范围:

序号类型和描述
1uint8
无符号 8 位整型 (0 到 255)
2uint16
无符号 16 位整型 (0 到 65535)
3uint32
无符号 32 位整型 (0 到 4294967295)
4uint64
无符号 64 位整型 (0 到 18446744073709551615)
5int8
有符号 8 位整型 (-128 到 127)
6int16
有符号 16 位整型 (-32768 到 32767)
7int32
有符号 32 位整型 (-2147483648 到 2147483647)
8int64
有符号 64 位整型 (-9223372036854775808 到 9223372036854775807)

浮点型 表格:

序号类型和描述
1float32
IEEE-754 32位浮点型数
2float64
IEEE-754 64位浮点型数
3complex64
32 位实数和虚数
4complex128
64 位实数和虚数

其他数字类型 以下是一些其他类型:

序号类型和描述
1byte
类似 uint8
2rune
类似 int32
3uint
32 或 64 位
4int
与uint一样大小
5uintptr
无符号整型,用于存放一个指针

复合类型 以下是一些示例:

var a [5]int = [3]int{1, 2, 345}
var b []int = []int{1, 2, 3}
var c map[string]int = map[string]int{"a": 1, "b": 2}
var d struct{ x, y int } = struct{ x, y int }{1, 2}
var e interface{} = 1.23

2.5 Go的运算符

Go的运算符在使用时基本和c语言类似。 运算符的优先级:

优先级运算符
5* / % << >> & &^
4+ - | ^
3== != < <= > >=
2&&
1||

2.6 Go的条件语句、循环语句、跳转语句

例子:

    a:=5
    if a > 0{
        fmt.Println("a是正数")
    }else if a == 0{
        fmt.Println("a是零")
    }else{
        fmt.Println("a是负数")
    }

    for i := 0; i < a; i++ {
        fmt.Println(i)
    }

    switch a {
    case 1:
        fmt.Println(1)
        case 2:
        fmt.Println(2)
    default:
        fmt.Println(a)
    }

这部分的代码示例展示了Go语言中的条件语句、循环语句和switch语句的使用方法。我将为您解释每一部分的含义。

a := 5
if a > 0 {
    fmt.Println("a是正数")
} else if a == 0 {
    fmt.Println("a是零")
} else {
    fmt.Println("a是负数")
}

这部分代码使用了if语句来判断变量a的值,并根据不同情况输出不同的结果。如果a大于0,则输出"a是正数";如果a等于0,则输出"a是零";否则,输出"a是负数"。

for i := 0; i < a; i++ {
    fmt.Println(i)
}

这部分代码使用了for循环来迭代从0到a-1的整数,并在每次循环中输出变量i的值。循环的条件是i < a,所以当a为5时,会输出0到4的数字。

switch a {
case 1:
    fmt.Println(1)
case 2:
    fmt.Println(2)
default:
    fmt.Println(a)
}

最后,这部分代码使用了switch语句来根据变量a的值进行选择。如果a的值是1,输出1;如果是2,输出2;否则,输出变量a的值。

这个示例展示了Go语言中常见的控制流语句的用法,包括条件语句、循环语句和switch语句。这些语句使得您可以根据不同的条件执行不同的操作,是编程中非常重要的基本工具。

值得注意的是,类比C语言,Go语言中的iffor语句可以省略括号

全部评论

相关推荐

不愿透露姓名的神秘牛友
01-15 20:52
黑皮白袜臭脚体育生:五宿大战是吧,死去的记忆还在攻击我
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务