vkorbes / aprendago

Curso completo em português da linguagem Go, de zero a ninja! 🇧🇷
http://aprendago.com
1k stars 179 forks source link

Exercício: Capítulo 13, Exercício 2 (Nível: 6) #42

Open vkorbes opened 3 years ago

vkorbes commented 3 years ago

Exercício: Capítulo 13, Exercício 2 (Nível: 6)

Link para o vídeo:

Use esta thread para compartilhar sua solução, discutir o exercício com os colegas e pedir ajuda caso tenha dificuldades!

diegoparra commented 3 years ago

Minha solução é basicamente igual porém pra primeira função eu crio a variável já chamando a função e depois faço o print do valor:

https://play.golang.org/p/XrA1NCmZ7QJ

an4kein commented 3 years ago

https://play.golang.org/p/ZuSobQ3z_g7

No início fiquei com dúvidas em relação como criar uma função que receba um valor do (type of slice).. Entre colocar (x ..int) and (x []int), mas após fazer do meu jeito consegui chegar no resultado. Adicionei outra função (teste) logo apos assistir o video e sanar minha dúvida.

package main

import "fmt"

/* - Crie uma função que receba um parâmetro variádico do tipo int e retorne a soma de todos os ints recebidos;
- Passe um valor do tipo slice of int como argumento para a função;
- Crie outra função, esta deve receber um valor do tipo slice of int e retornar a soma de todos os elementos da slice;
- Passe um valor do tipo slice of int como argumento para a função.
*/

func vari(x ...int) int {
    soma := 0
    for _, i := range x {
        soma += i
    }
    return soma
}

func recebevalor(x ...int) int {
    soma := 0
    for _, i := range x {
        soma += i
    }
    return soma
}

func teste(x []int) int {
    soma := 0
    for _, v := range x {
        soma += v
    }
    return soma
}

func main() {
    fmt.Println(vari(1, 2))
    fmt.Println(recebevalor([]int{2, 2}...))
    fmt.Println(teste([]int{5, 5}))
}

Output

3
4
10

Program exited.
alansantosmg commented 3 years ago

My solution:

/* - Crie uma função que receba um parâmetro variádico do tipo int e
retorne a soma de todos os ints recebidos;
- Passe um valor do tipo slice of int como argumento para a função;
- Crie outra função, esta deve receber um valor do tipo slice of int e
retornar a soma de todos os elementos da slice;
- Passe um valor do tipo slice of int como argumento para a função.
*/

package main

import "fmt"

func main() {

    s := []int{1, 2, 3, 4, 5}

    fmt.Println(variação(s...))
    fmt.Println(variação2(s))
}

func variação(x ...int) (total int) {
    for v := range x {
        total += x[v]
    }
    return
}
func variação2(y []int) (total int) {
    for v := range y {
        total += y[v]
    }
    return
}
wfrsilva commented 2 years ago

Cap. 13 – Exercícios: Nível #6 – 2 https://go.dev/play/p/FtEIO5xzSRk

image

Harsgaard commented 1 year ago

https://go.dev/play/p/bo0QjfWXAr2

UdsonWillams commented 3 months ago

Já que era o mesmo codigo, não reescrevi 2 vezes 😄

package main

import "fmt"

func main() {
    value_1 := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
    total_1 := SomaInts(value_1...)
    fmt.Println(total_1)

    value_2 := []int{10, 20, 30, 40, 50, 60, 70, 80, 90}
    total_2 := SomaSlicesInts(value_2)
    fmt.Println(total_2)

}

func SomaInts(value ...int) int {
    total := 0
    for _, v := range value {
        total += v
    }
    return total
}

func SomaSlicesInts(value []int) int {
    total := SomaInts(value...)
    return total
}
thiagoCalazans-dev commented 2 months ago

package main

import "fmt"

//Crie uma função que receba um parâmetro variádico do tipo int e retorne a soma de todos os ints recebidos
//Passe um valor do tipo slice of int como argumento para a função;
//Crie outra função, esta deve receber um valor do tipo slice of int e retornar a soma de todos os elementos da slice;
//Passe um valor do tipo slice of int como argumento para a função.

func main() {

    slice := []int{2, 3, 5}
    fmt.Println(somaDeVariadico(slice...))
}

func somaDeVariadico(variadico ...int) int {
    total := 0
    for _, v := range variadico {
        total += v
    }
    return total
}