Go (Golang)中的通道数组Array和切片Slice

3,349 阅读3分钟

概述

在Golang中也可以创建一个通道数据类型的片断或数组。事实上,在Go中可以创建任何数据类型的片断或数组。本教程包含了在Golang中创建通道分片或数组的简单例子。

这里要补充的是,在Golang中数组是固定大小的,而片断可以有可变的大小。

更多的细节在这里

数组- https://golangbyexample.com/understanding-array-golang-complete-guide/

片 - https://golangbyexample.com/slice-in-golang/

通道的片断

package main

import "fmt"

func main() {

	channel1 := make(chan int)
	channel2 := make(chan int)
	channel3 := make(chan int)

	//First Way
	var channels_first []chan int
	channels_first = append(channels_first, channel1)
	channels_first = append(channels_first, channel2)
	channels_first = append(channels_first, channel3)

	fmt.Println("\nOutput for First slice of channels")
	for _, c := range channels_first {
		fmt.Println(c)
	}

	//Second Way
	channels_second := make([]chan int, 3)
	channels_second[0] = channel1
	channels_second[1] = channel2
	channels_second[2] = channel3

	fmt.Println("\nOutput for Second slice of channels")
	for _, c := range channels_second {
		fmt.Println(c)
	}
}

输出

Output for First slice of channels
0xc000118000
0xc000118060
0xc0001180c0

Output for Second slice of channels
0xc000118000
0xc000118060
0xc0001180c0

在你的机器上的输出将是不同的,因为它是一个地址。

在上面的程序中,我们创建了三个数据类型为int的通道。

channel1 := make(chan int)
channel2 := make(chan int)
channel3 := make(chan int)

那么我们有两种方法来创建一个通道片。第一种方法是

var channels_first []chan int
channels_first = append(channels_first, channel1)
channels_first = append(channels_first, channel2)
channels_first = append(channels_first, channel3)

第二种方法,我们使用make命令来创建一个通道片。

channels_second := make([]chan int, 3)
channels_second[0] = channel1
channels_second[1] = channel2
channels_second[2] = channel3

无论哪种方法都可以。这就是我们如何创建一个通道片的方法

频道的数组

package main

import "fmt"

func main() {
	channel1 := make(chan int)
	channel2 := make(chan int)
	channel3 := make(chan int)

	var channels_first [3]chan int

	channels_first[0] = channel1
	channels_first[1] = channel2
	channels_first[2] = channel3

	fmt.Println("Output for First Array of channels")
	for _, c := range channels_first {
		fmt.Println(c)
	}

	channel_second := [3]chan int{
		channel1,
		channel2,
		channel3,
	}

	fmt.Println("\nOutput for Second Array of channels")
	for _, c := range channel_second {
		fmt.Println(c)
	}
}

输出

Output for First Array of channels
0xc00008c060
0xc00008c0c0
0xc00008c120

Output for Second Array of channels
0xc00008c060
0xc00008c0c0
0xc00008c120

在你的机器上的输出将是不同的,因为它是一个地址。

在上面的程序中,我们创建了三个数据类型为int的通道。

channel1 := make(chan int)
channel2 := make(chan int)
channel3 := make(chan int)

那么我们有两种方法来创建一个数组。第一种方法是

var channels_first [3]chan int
channels_first[0] = channel1
channels_first[1] = channel2
channels_first[2] = channel3

第二种方法,我们直接用创建的通道来初始化数组

channel_second := [3]chan int{
	channel1,
	channel2,
	channel3,
}

请看我们的Golang高级教程。这个系列的教程是精心设计的,我们试图用例子来涵盖所有的概念。本教程是为那些希望获得专业知识和对Golang有扎实了解的人准备的 - Golang高级教程

如果你有兴趣了解如何在Golang中实现所有设计模式。如果是的话,那么这篇文章就是为你准备的--所有设计模式 Golang

The postSlice or Array of Channels in Go (Golang)appeared first onWelcome To Golang By Example.