9.3 Go语言入门(变量声明和函数调用)

目录

Go 语言(Golang)是一种静态类型、编译型语言,由 Google 开发,专注于简洁性、并发和高效性。

下面是 Go 语言的基础语法讲解和代码示例。


上一篇:一、Go语言入门(包和导入)


二、变量声明和函数调用

在 Go 语言中,变量声明和函数定义是基础语法的重要部分。下面将详细讲解变量声明和函数定义,并提供代码示例。

1. 变量声明

1.1 使用 var 关键字声明

使用 var 关键字可以显式声明变量,并指定类型。也可以在声明时进行初始化。

package main

import "fmt"

func main() {
    // 声明一个字符串变量并初始化
    var name string = "Alice"
    fmt.Println(name)

    // 声明一个整型变量,未初始化时会使用零值
    var age int
    fmt.Println(age) // 默认值 0

    // 同时声明多个变量
    var width, height int = 100, 200
    fmt.Println(width, height)

    // 类型推断
    var country = "USA"
    fmt.Println(country)

    // 声明布尔变量
    var isActive bool = true
    fmt.Println(isActive)
}

1.2 简短声明

使用 := 进行简短声明,类型由右值推断。这种方法只能在函数内部使用。

package main

import "fmt"

func main() {
    // 简短声明变量
    name := "Bob"
    age := 30
    fmt.Println(name, age)

    // 同时声明多个变量
    x, y := 10, 20
    fmt.Println(x, y)

    // 声明布尔变量
    isActive := false
    fmt.Println(isActive)
}

1.3 零值

未初始化的变量会被赋予默认的零值:

  1. 数字类型(包括 int, float64):0
  2. 布尔类型:false
  3. 字符串类型:“”(空字符串)
  4. 指针、切片、映射、通道、函数和接口:nil
package main

import "fmt"

func main() {
    var a int
    var b float64
    var c bool
    var d string
    var e []int

    fmt.Println(a) // 0
    fmt.Println(b) // 0
    fmt.Println(c) // false
    fmt.Println(d) // ""
    fmt.Println(e) // []
}

1.4 常量

使用 const 关键字声明常量,常量在编译时确定,并且不可修改。

package main

import "fmt"

const Pi = 3.14

func main() {
    const Greeting = "Hello, World!"
    fmt.Println(Pi)
    fmt.Println(Greeting)
}

2. 函数调用

2.1 函数定义

Go 中的函数定义包括函数名、参数列表、返回值列表和函数体。

package main

import "fmt"

// 定义一个函数,接受两个 int 参数,返回它们的和
func add(x int, y int) int {
    return x + y
}

func main() {
    sum := add(3, 4)
    fmt.Println("Sum:", sum)
}

2.2 多个返回值

Go 的函数可以返回多个值。

package main

import "fmt"

// 交换两个字符串
func swap(a, b string) (string, string) {
    return b, a
}

func main() {
    x, y := swap("hello", "world")
    fmt.Println(x, y) // 输出:world hello
}

2.3 命名返回值

返回值可以在函数定义中命名,命名返回值在函数体中被初始化为对应类型的零值。return 语句可以返回这些值。

package main

import "fmt"

func split(sum int) (x, y int) {
    x = sum * 4 / 9
    y = sum - x
    return // 省略返回变量名,返回 x, y
}

func main() {
    fmt.Println(split(17)) // 输出:7 10
}

2.4 可变参数

使用 表示可变参数。

package main

import "fmt"

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

func main() {
    fmt.Println(sum(1, 2, 3))       // 输出:6
    fmt.Println(sum(4, 5, 6, 7, 8)) // 输出:30
}

2.5 匿名函数和闭包

匿名函数和闭包在 Go 中也很常见。

package main

import "fmt"

func main() {
    // 匿名函数
    add := func(x, y int) int {
        return x + y
    }
    fmt.Println(add(3, 4)) // 输出:7

    // 闭包
    counter := func() func() int {
        i := 0
        return func() int {
            i++
            return i
        }
    }()
    
    fmt.Println(counter()) // 输出:1
    fmt.Println(counter()) // 输出:2
    fmt.Println(counter()) // 输出:3
}

通过理解变量声明和函数定义,可以掌握 Go 语言的基础语法,并有效编写和组织代码。


下一篇:三、Go语言入门(运算符)


在这里插入图片描述

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
9.3 微处理器的中断系统 中断是微处理器与外部设备通信的重要方式之一。当外部设备需要处理器的服务时,可以通过中断来请求处理器执行相应的程序。微处理器根据中断的优先级,暂停当前正在执行的程序,转而执行中断服务程序,处理完毕后再返回原来的程序继续执行。 在微处理器中,中断是由中断请求信号(INTR)引起的。当INTR信号为高电平时,微处理器就会暂停当前的程序,执行中断程序。中断服务程序执行完毕后,需要通过中断返回指令(IRET)将处理器状态恢复到中断前的状态,然后再返回到原来的程序继续执行。 中断请求信号可以来自于外部设备,也可以来自于处理器内部。在外部设备中断请求信号(IRQ)中,共有15个可编程的中断请求引脚,编号从0到15。其中,IRQ0~IRQ7是可屏蔽中断,可以通过设置中断屏蔽寄存器(IMR)来屏蔽或打开这些中断。IRQ8~IRQ15是不可屏蔽中断,这些中断无法被屏蔽。 在处理器内部,常见的中断有除法错误中断、调试中断、非屏蔽中断、软件中断等。除法错误中断是在进行除法运算时发生除数为0的错误时触发的中断;调试中断是在进行软件调试时触发的中断;非屏蔽中断是处理器内部错误或系统故障时触发的中断;软件中断是由程序通过软件指令触发的中断。 在编写中断服务程序时,需要注意以下几点: 1、中断服务程序需要保存现场,包括通用寄存器、标志寄存器、堆栈指针等,以便在执行完中断服务程序后能够正确返回到原程序。 2、中断服务程序需要清除中断标志,以便处理器能够接收下一个中断请求。 3、中断服务程序需要尽可能快地执行完毕,避免影响其他程序的运行。 4、中断服务程序需要保证可重入性,即能够在多个中断同时发生时正确地执行。 5、中断服务程序需要正确地处理中断请求,避免误判或漏判中断请求。 总之,中断是微处理器与外部设备通信的重要方式之一,编写中断服务程序需要注意许多细节,才能确保程序的正确性和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ibun.song

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值