go基础知识点(go over的知识点)

Go语言基础语法

Go语言是一种以效率为设计目标的编程语言,其语法简洁、高效,可以快速上手。作为一种静态类型的编程语言,Go语言具有以下几个基础语法:

1. 变量和常量

在Go语言中,我们可以通过 var 关键字定义变量和常量。定义变量的格式为:var 变量名 变量类型 = 表达式。

例如,定义一个整型变量 a,并赋值为10,代码如下:

var a int = 10

定义常量的格式为:const 常量名 类型 = 表达式。

例如,定义一个字符串常量 pi,并赋值为3.14,代码如下:

const pi string = "3.14"

2. 数据类型

Go语言的数据类型包括数值型、布尔型、字符串型、字符型、指针型、数组型、切片型、字典型、结构体等。在声明变量时,需要明确指定变量的数据类型。

3. 控制语句

Go语言中的控制语句包括 if、for、switch和select。通过这些语句,我们可以控制程序的流程和执行顺序。

例如,在Go语言中定义一个 for 循环,输出 0 到 9 的数值,代码如下:

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

Go语言函数

函数是Go语言的重要特性,它可以将一组代码封装成一个逻辑单元,并在需要时调用它。在Go语言中,函数有以下几个基本特点:

1. 函数的定义格式

定义一个函数时,需要指定函数名、参数列表、返回值类型和函数体,函数的定义格式如下:

func 函数名(参数列表) 返回值类型 {
     函数体
}

例如,定义一个函数 add,接收两个整数参数,返回它们的和:

func add(a int, b int) int {
    return a + b
}

2. 函数的调用

函数的调用可以直接使用函数名和传入参数的值进行调用,例如:

c := add(1, 2)
fmt.Println(c)

3. 可变参数函数

在Go语言中,函数可以使用 ...type 表示可变参数。可变参数函数的传参方式类似于切片,可以传递任意数量的参数。

例如,定义一个可变参数函数 sum,计算传入参数的和:

func sum(nums ...int) int {
    total := 0
    for _, num := range nums {
        total += num
    }
    return total
}

Go语言并发编程

Go语言最大的特点之一是原生支持并发编程。通过 goroutine 和 channel 实现并发,可以提高代码的执行效率和性能。在Go语言中,实现并发编程的基本要素包括:

1. goroutine

Go语言中的 goroutine 很类似于线程,但是它可以由 Go语言的运行时系统自动调度执行,避免了线程在操作系统层面上切换的开销。

定义一个 goroutine 时,需要在函数名称前面添加关键字 go,例如:

func main() {
     go hello() //启用一个goroutine执行hello函数
}

func hello() {
    fmt.Println("hello goroutine")
}

2. channel

Go语言中的 channel 可以用于两个或多个 goroutine 之间的通信。channel 提供了一种同步机制,用于协调多个 goroutine 的执行顺序。

例如,定义一个 channel,用于发送和接收字符串:

ch := make(chan string) //定义一个字符串类型的channel

go func() {
    ch <- "hello channel" //向channel中发送一个字符串
}()

msg := <-ch //从channel中读取一个字符串
fmt.Println(msg)

3. select

select 是一个由多个 case 语句组成的结构,在多个 channel 非阻塞的情况下,select 主动等待 channel 的输入,来实现多路复用的目的,可以有效提高程序的处理性能。

例如,定义两个 channel,同时向它们中的一个发送消息:

ch1 := make(chan string)
ch2 := make(chan string)

go func() {
    time.Sleep(1 * time.Second)
    ch1 <- "hello channel1"
}()

go func() {
    time.Sleep(2 * time.Second)
    ch2 <- "hello channel2"
}()

select {
case msg1 := <-ch1:
    fmt.Println(msg1)
case msg2 := <-ch2:
    fmt.Println(msg2)
}

以上是 Go语言基础知识点的介绍,希望能让读者更好地了解和使用 Go语言。

本文来自投稿,不代表亲测学习网立场,如若转载,请注明出处:https://www.qince.net/golang-0l.html

郑重声明:

本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。

我们不承担任何技术及版权问题,且不对任何资源负法律责任。

如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。

如有侵犯您的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!

(0)
上一篇 2023年5月2日 上午4:37
下一篇 2023年5月2日 上午4:37

猜你喜欢