Table des matières
Qu'est-ce que la transposition de tableau ?
Pour une matrice M*N, nous pouvons utiliser un tableau bidimensionnel pour la représenter. En Golang, la définition d'un tableau bidimensionnel est la suivante :
Golang数组转置实现
rrreee
Maison développement back-end Golang transposition du tableau Golang

transposition du tableau Golang

May 15, 2023 pm 12:21 PM

Ces dernières années, Golang a continué à être recherché et respecté parmi les programmeurs, notamment en tant que l'un des principaux langages de développement commercial dans certaines grandes entreprises. En tant que structure de base des données, le tableau est un type souvent utilisé en programmation. Cet article présentera une méthode classique de transposition de tableau Golang.

Qu'est-ce que la transposition de tableau ?

La transposition de tableau consiste à échanger les lignes et les colonnes d'une matrice. Par exemple, la matrice Indique le type d'élément. Par exemple :

1

2

3

1 2 3

4 5 6

7 8 9

Copier après la connexion

Implémentation de transposition de tableau Golang

Pour une matrice M*N, nous pouvons utiliser un tableau bidimensionnel pour la représenter. En Golang, la définition d'un tableau bidimensionnel est la suivante :

1

2

3

1 4 7

2 5 8

3 6 9

Copier après la connexion

Vous pouvez d'abord définir un tableau bidimensionnel pour représenter la matrice d'origine :

1

var array [n]Type

Copier après la connexion

Ensuite, nous devons définir une fonction transpose</ code> pour implémenter la transposition matricielle . Cette fonction doit transmettre un tableau bidimensionnel <code>a et ses numéros de ligne et de colonne m et n. L'implémentation de la fonction est la suivante : n表示数组长度,Type表示元素类型。例如:

1

2

var a [5]int // 定义一个长度为5的int数组

a[0] = 1     // 给第0个元素赋值为1

Copier après la connexion

Golang数组转置实现

对于一个M*N的矩阵,我们可以用二维数组来表示。在Golang中,二维数组的定义如下:

1

var array [m][n]Type

Copier après la connexion

可以先定义一个二维数组来表示原始矩阵:

1

2

3

4

5

var matrix = [3][3]int{

    {1, 2, 3},

    {4, 5, 6},

    {7, 8, 9},

}

Copier après la connexion

接下来,我们需要定义一个函数transpose来实现矩阵转置。该函数需要传入一个二维数组a以及其行列数mn。函数的实现如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

func transpose(a [][]int, m, n int) [][]int {

    // 创建一个新的n*m的数组

    b := make([][]int, n)

    for i := 0; i < n; i++ {

        b[i] = make([]int, m)

    }

 

    // 将a的行与b的列对应

    for i := 0; i < n; i++ {

        for j := 0; j < m; j++ {

            b[i][j] = a[j][i]

        }

    }

 

    return b

}

Copier après la connexion

在函数中,我们先创建了一个n*m的二维数组b,并对其每个元素进行了初始化。接着,我们对原始矩阵a进行遍历,并将a的行与b的列进行对应,将结果存入b中。最后,函数返回了转置后的矩阵b

1

2

3

4

5

6

7

8

9

10

11

12

13

14

func main() {

    matrix := [3][3]int{

        {1, 2, 3},

        {4, 5, 6},

        {7, 8, 9},

    }

 

    // 转置前

    fmt.Println(matrix)

 

    // 转置后

    transposedMatrix := transpose(matrix[:], 3, 3)

    fmt.Println(transposedMatrix)

}

Copier après la connexion

Dans la fonction, nous créons d'abord un tableau bidimensionnel b de n*m et initialisons chaque élément de celui-ci. Ensuite, nous parcourons la matrice d'origine a, faisons correspondre les lignes de a avec les colonnes de b et stockons les résultats dans b dans. Enfin, la fonction renvoie la matrice transposée b.

Dans la fonction principale, nous pouvons appeler cette fonction pour implémenter la transposition de tableau :

1

2

[[1 2 3] [4 5 6] [7 8 9]]

[[1 4 7] [2 5 8] [3 6 9]]

Copier après la connexion
Le résultat de sortie est le suivant :

rrreee

Résumé

Grâce à l'implémentation ci-dessus, nous pouvons voir que l'opération de transposition de tableau Golang est très simple . Parcourez simplement la matrice d'origine et faites correspondre les lignes et les colonnes. Bien entendu, il existe d’autres implémentations, comme l’utilisation d’un tableau unidimensionnel pour simuler un tableau bidimensionnel. Quelle que soit la méthode que vous choisissez, vous devez faire attention au problème des limites des indices de tableau pour éviter les erreurs inattendues. Avec une pratique et une pratique continues, je pense que vous pouvez facilement maîtriser l'opération de transposition de tableau de Golang. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

GO Language Pack Import: Quelle est la différence entre le soulignement et sans soulignement? GO Language Pack Import: Quelle est la différence entre le soulignement et sans soulignement? Mar 03, 2025 pm 05:17 PM

GO Language Pack Import: Quelle est la différence entre le soulignement et sans soulignement?

Comment mettre en œuvre le transfert d'informations à court terme entre les pages du cadre Beego? Comment mettre en œuvre le transfert d'informations à court terme entre les pages du cadre Beego? Mar 03, 2025 pm 05:22 PM

Comment mettre en œuvre le transfert d'informations à court terme entre les pages du cadre Beego?

Comment convertir la liste des résultats de la requête MySQL en une tranche de structure personnalisée dans le langage Go? Comment convertir la liste des résultats de la requête MySQL en une tranche de structure personnalisée dans le langage Go? Mar 03, 2025 pm 05:18 PM

Comment convertir la liste des résultats de la requête MySQL en une tranche de structure personnalisée dans le langage Go?

Comment puis-je définir des contraintes de type personnalisé pour les génériques en Go? Comment puis-je définir des contraintes de type personnalisé pour les génériques en Go? Mar 10, 2025 pm 03:20 PM

Comment puis-je définir des contraintes de type personnalisé pour les génériques en Go?

Comment écrire des objets et des talons simulés pour les tests en Go? Comment écrire des objets et des talons simulés pour les tests en Go? Mar 10, 2025 pm 05:38 PM

Comment écrire des objets et des talons simulés pour les tests en Go?

Comment rédigez-vous des tests unitaires en Go? Comment rédigez-vous des tests unitaires en Go? Mar 21, 2025 pm 06:34 PM

Comment rédigez-vous des tests unitaires en Go?

Comment écrire des fichiers dans GO Language de manière pratique? Comment écrire des fichiers dans GO Language de manière pratique? Mar 03, 2025 pm 05:15 PM

Comment écrire des fichiers dans GO Language de manière pratique?

Comment puis-je utiliser des outils de traçage pour comprendre le flux d'exécution de mes applications GO? Comment puis-je utiliser des outils de traçage pour comprendre le flux d'exécution de mes applications GO? Mar 10, 2025 pm 05:36 PM

Comment puis-je utiliser des outils de traçage pour comprendre le flux d'exécution de mes applications GO?

See all articles