Golang est difficile à traduire. .. .. (Partie 1)

Contexte

Je traduis le langage C en Golang, mais c'est assez difficile.

Traitement itératif (essentiellement pour seulement?) Ou chaînes de caractères (le type char n'est pas dans Golang).

Donc, je crée un "programme qui compte le nombre de voyelles de la chaîne de caractères d'entrée", mais les types "chaîne", "octet" et "rune" sont géniaux.

Si vous connaissez une percée, j'apprécierais que vous me le disiez.

Code C

2-3.c


#include <stdio.h>

int main(void)
{
	char moziretu[100] = {};
	char boin[5] = {'a', 'i', 'u', 'e', 'o'};
	int count[5] = {};  /*Chaque élément correspond au caractère du tableau boin.(count[0]À'a'Remplacez le nombre de)*/

	int i;
	int j = 0;
	

	
	printf("Chaîne>>>");
	/*Entrez une chaîne*/
	scanf("%s", moziretu);

	/*Répétez jusqu'à ce que enter soit chargé*/
	while(moziretu[j] != '\0'){
		for(i = 0; i < 5; i++){
			/*Compter si une voyelle est trouvée dans la chaîne*/
			if(moziretu[j] == boin[i]) count[i]++;
		}
		j++;
	}

		/*Afficher le nombre de voyelles*/
	for(i = 0; i < 5; i++){
		printf("%c : %d\t", boin[i], count[i]);
	}

	printf("\n");
	return 0;
}

Code Golang

2-3.go


package main

import "fmt"

func main(){
	/*Définition de la chaîne d'entrée*/
	var input string

	/*Tableau pour stocker les voyelles*/
	boin := []rune{'a', 'i', 'u', 'e', 'o'}

	/*Nombre de comptes pour chaque voyelle*/
	count := []int{0, 0, 0, 0, 0}

	/*Pour les boucles*/
	i := 0
	j := 0

	/*Saisie de la chaîne de caractères*/
	fmt.Printf("String>>>")
	fmt.Scanln("%s", &input)
	str := []rune(input)

	/*Répétez jusqu'à ce que enter soit chargé*/
	for {
		for i = 0; i < 5; i++ {
			/*Compter si une voyelle est trouvée dans la chaîne*/
			if str[j] == boin[i] {
				count[i] += 1
			}
		}
		if str[j] == '\x00' {
			break
		}
		j += 1
	}

	/*Afficher le nombre de voyelles*/
	for i = 0; i < 5; i++ {
		fmt.Printf("%s : %d\n", boin[i], count[i])
	}
}

À propos, l'exécution du code Golang ci-dessus provoque une panique.

$ go run 2-3.go
String>>>panic: runtime error: index out of range

goroutine 1 [running]:
panic(0x4e8200, 0xc82000a0e0)
        /usr/lib/go-1.6/src/runtime/panic.go:481 +0x3e6
main.main()
        /home/yuki-f/Golang/pro2/2-3.go:28 +0x55f
exit status 2

Postscript

fixé.

package main

import "fmt"

func main(){
	/*Définition de la chaîne d'entrée*/
	var input string

	/*Tableau pour stocker les voyelles*/
	boin := []rune{'a', 'i', 'u', 'e', 'o'}

	/*Nombre de comptes pour chaque voyelle*/
	count := []int{0, 0, 0, 0, 0}

	/*Pour les boucles*/
	i := 0
	j := 0

	/*Saisie de la chaîne de caractères*/
	fmt.Printf("String>>>")
	fmt.Scanf("%s", &input)
	str := []rune(input)

	/*Répétez jusqu'à ce que enter soit chargé*/
	for j < len(str){
		for i = 0; i < 5; i++ {
			/*Compter si une voyelle est trouvée dans la chaîne*/
			if str[j] == boin[i] {
				count[i] += 1
			}
		}
		j += 1
	}

	/*Afficher le nombre de voyelles*/
	for i = 0; i < 5; i++ {
		fmt.Printf("%c : %d\n", boin[i], count[i])
	}
}

Recommended Posts

Golang est difficile à traduire. .. .. (Partie 1)
Traversée d'arbre binaire incompréhensible
Introduction à PyQt4 Partie 1
Re: Python lambda est inutile ^ H ^ H ^ H ^ H ^ H Difficile à utiliser
Partie 1 Tentative de codage des mathématiques (∈)
Cython arrive sur AtCoder !!
Introduction à Ansible Part «Inventaire»
Introduction à Ansible Part ④'Variable '
Ruby sur Windows Effacer la gestion des fichiers difficile à comprendre
Comment utiliser Python avec Jw_cad (Partie 1 Qu'est-ce que la transformation externe)