美文网首页
Go语言之多个变量同时赋值三

Go语言之多个变量同时赋值三

作者: DreamKing | 来源:发表于2019-02-27 11:26 被阅读0次

编程最简单的算法之一,莫过于变量交换。交换变量的常见算法需要一个中间变量进行变量的临时保存。用传统方法编写变量交换代码如下:

var a int = 100
var b int = 200
var t int
t = a
a = b
b = t
fmt.Println(a, b)

在计算机刚发明时,内存非常“精贵”。这种变量交换往往是非常奢侈的。于是计算机“大牛”发明了一些算法来避免使用中间变量:

var a int = 100
var b int = 200
a = a ^ b
b = b ^ a
a = a ^ b
fmt.Println(a, b)

这样的算法很多,但是都有一定的数值范围和类型要求。
到了 Go 语言时,内存不再是紧缺资源,而且写法可以更简单。使用 Go 的“多重赋值”特性,可以轻松完成变量交换的任务:

var a int = 100
var b int = 200
b, a = a, b
fmt.Println(a, b)

多重赋值时,变量的左值和右值按从左到右的顺序赋值。
多重赋值在 Go 语言的错误处理和函数返回值中会大量地使用。
例如,使用 Go 语言进行排序时就需要使用交换,代码如下:

type IntSlice []int

func (p IntSlice) Len() int {
    return len(p) 
}
func (p IntSlice) Less(i, j int) bool { 
    return p[i] < p[j] 
}
func (p IntSlice) Swap(i, j int) { 
    p[i], p[j] = p[j], p[i]
}

代码说明如下:

  • 第 1 行,将 []int 声明为 IntSlice 类型。
  • 第 3 行,为这个类型编写一个 Len 方法,提供切片的长度。
  • 第 4 行,根据提供的 i、j 元素索引,获取元素后进行比较,返回比较结果。
  • 第 5 行,根据提供的 i、j 元素索引,交换两个元素的值。

本文学习来源于C语言中文网>Go语言教程

相关文章

  • Go语言之多个变量同时赋值三

    编程最简单的算法之一,莫过于变量交换。交换变量的常见算法需要一个中间变量进行变量的临时保存。用传统方法编写变量交换...

  • go 数据类型、标识符、关键字

    var是变量声明, 后面跟变量,然后变量类型 =右边是赋值go 也支持多个赋值,=左边是需要赋值的多个变量,用逗号...

  • =和:=区别

    go语言中 = 是赋值,而 := 是声明变量并赋值

  • 同时赋值给多个变量及元组的连接组合

    1.将元组赋值给一个变量输入: 输出: 2.将元组同时赋值给多个变量输入: 输出: 3.将多个值同时赋值给多个变量...

  • Go 基础

    go 介绍 编程 变量赋值初始化 Println 与 Printf 的区别 匿名变量,Go函数可以返回多个值 常量...

  • GO语言变量

    Go语言变量 定义变量 定义的同时初始化, 这时数据类型可以省略(系统会自动赋值来判断什么数据类型 定义的同时初始...

  • C语言基础

    C语言定义变量 定义一个变量 给变量赋值 定义一个变量的同时给变量赋值 C语言使用变量之前必须赋值或者初始化 试试...

  • Python语言基础之——变量和运算符

    1.变量 1.定义变量 2.使用变量 3.修改变量 重新给变量赋值 4. 同时给多个变量赋值 2.变量赋值的原理 ...

  • 【Golang 基础】Go 语言的变量与常量

    Go 语言的变量与常量 变量声明,初始化与赋值 (示例代码) 变量的声明格式:var <变量名称> [变量类型];...

  • Go语言学习笔记-基本程序结构-变量常量

    变量 var关键字定义变量 赋值可以自动类型推断 在一个赋值语句中可以对多个变量同时进行赋值 常量 快速设置连续值

网友评论

      本文标题:Go语言之多个变量同时赋值三

      本文链接:https://www.haomeiwen.com/subject/ixpxuqtx.html