Giter Club home page Giter Club logo

Comments (18)

diegoparra avatar diegoparra commented on August 22, 2024

https://play.golang.org/p/5ImpADhNsW7

from aprendago.

haystem avatar haystem commented on August 22, 2024
package main

import("fmt")

func main(){
  estados:= make([]string,15,20)
  estados = []string{
    "Acre", 
    "Alagoas",
    "Amapá", 
    "Amazonas",
    "Bahia", 
    "Ceará", 
    "Espírito Santo", 
    "Goiás", 
    "Maranhão", 
    "Mato Grosso",
    "Mato Grosso do Sul",
  }
  estados = append(estados,"Minas Gerais", "Pará", "Paraíba", 
  "Paraná", "Pernambuco", "Piauí", "Rio de Janeiro", 
  "Rio Grande do Norte", "Rio Grande do Sul", "Rondônia", 
  "Roraima", "Santa Catarina", "São Paulo", "Sergipe", "Tocantins" )

  fmt.Println(len(estados),cap(estados))

for x:=0; x < len(estados);x++{
  fmt.Println(estados[x])
}
  
}

from aprendago.

ghtms avatar ghtms commented on August 22, 2024

Olá,
se aumentarmos a capacidade do slice no make, a mesma não deveria ser informada no print?
ex. colocar cap 100 no make e na hora do print, o cap deve mostrar 100

Aparentemente, nas respostas apresentadas, quando em seguida ao make fazemos o slice literal, está a assumir o cap baseado no len desse slice e qualquer alteração na chamada do make (len ou cap) não são levados em consideração.

fiz um exemplo onde ao se mudar os valores do make, o mesmo reflete no restante do código

make com um valor de cap maior q o len
https://play.golang.org/p/vcQLafr-Fuu

make com valor igual ao len e que ao adicionar mais 1 valor, o cap é aumentado automaticamente.
https://play.golang.org/p/ILl6gldDxZ7

faz sentido?

from aprendago.

an4kein avatar an4kein commented on August 22, 2024

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

Observei que podemos começar o  length and capacity com 0 zero, se não soubermos a quantidade de dados que nossa slice vai receber.

package main

import (
	"fmt"
)

func main() {
	estados := make([]string, 0, 0)
	fmt.Println("length before: ", len(estados))
	fmt.Println("capacity before: ",cap(estados))
	fmt.Println("")
	estados = append(estados, "Acre", "Alagoas", "Amapá", "Amazonas", "Bahia", "Ceará", "Espírito Santo", "Goiás", "Maranhão", "Mato Grosso", "Mato Grosso do Sul", "Minas Gerais", "Pará", "Paraíba", "Paraná", "Pernambuco", "Piauí", "Rio de Janeiro", "Rio Grande do Norte", "Rio Grande do Sul", "Rondônia", "Roraima", "Santa Catarina", "São Paulo", "Sergipe", "Tocantins")
	fmt.Println(estados)
	fmt.Println("")
	fmt.Println("length after: ",len(estados))
	fmt.Println("capacity after: ",cap(estados))
	fmt.Println("")
	for i := 0; i < len(estados); i++ {
		fmt.Println(estados[i])
	}

}

Output

length before:  0
capacity before:  0

[Acre Alagoas Amapá Amazonas Bahia Ceará Espírito Santo Goiás Maranhão Mato Grosso Mato Grosso do Sul Minas Gerais Pará Paraíba Paraná Pernambuco Piauí Rio de Janeiro Rio Grande do Norte Rio Grande do Sul Rondônia Roraima Santa Catarina São Paulo Sergipe Tocantins]

length after:  26
capacity after:  26

Acre
Alagoas
Amapá
Amazonas
Bahia
Ceará
Espírito Santo
Goiás
Maranhão
Mato Grosso
Mato Grosso do Sul
Minas Gerais
Pará
Paraíba
Paraná
Pernambuco
Piauí
Rio de Janeiro
Rio Grande do Norte
Rio Grande do Sul
Rondônia
Roraima
Santa Catarina
São Paulo
Sergipe
Tocantins

Program exited.

from aprendago.

alansantosmg avatar alansantosmg commented on August 22, 2024

My solution:

package main

import "fmt"

func main() {

	estados := make([]string, 26)

	estados = []string{"Acre", "Alagoas", "Amapá", "Amazonas", "Bahia", "Ceará", "Espírito Santo", "Goiás", "Maranhão", "Mato Grosso", "Mato Grosso do Sul", "Minas Gerais", "Pará", "Paraíba", "Paraná", "Pernambuco", "Piauí", "Rio de Janeiro", "Rio Grande do Norte", "Rio Grande do Sul", "Rondônia", "Roraima", "Santa Catarina", "São Paulo", "Sergipe", "Tocantins"}

	for i := 0; i < len(estados); i++ {

		fmt.Println(estados[i])
	}

	fmt.Println("Len: ", len(estados), "Cap: ", cap(estados))

}

from aprendago.

alansantosmg avatar alansantosmg commented on August 22, 2024

Se eu não souber quantos dados vou colocar no slice, então eu não preciso criá-lo com make. Entendi que o make é justamente para que eu possa controlar o len e o cap. Pelo que li da documentação, quando o comprimento dos dados (len) excedem o cap (ao fazer um append), Go dobra o cap.

from aprendago.

Lucasmirandar avatar Lucasmirandar commented on August 22, 2024

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

from aprendago.

andersoncleyson avatar andersoncleyson commented on August 22, 2024
package main

import "fmt"

func main() {
	slice := make([]string, 26, 26)

	slice = []string{"Acre", "Alagoas", "Amapá", "Amazonas", "Bahia", "Ceará",
		"Espírito Santo", "Goiás", "Maranhão", "Mato Grosso",
		"Mato Grosso do Sul", "Minas Gerais", "Pará", "Paraíba",
		"Paraná", "Pernambuco", "Piauí", "Rio de Janeiro",
		"Rio Grande do Norte", "Rio Grande do Sul", "Rondônia",
		"Roraima", "Santa Catarina", "São Paulo", "Sergipe", "Tocantins"}

	fmt.Println(len(slice), cap(slice))

	for i := 1; i <= len(slice)-1; i++ {
		fmt.Println(slice[i])
	}
}

from aprendago.

tomashugo avatar tomashugo commented on August 22, 2024
package main

import (
	"fmt"
)

func main() {
	estados := make([]string, 0, 54)
	estados = append(estados, "Acre", "Alagoas", "Amapá", "Amazonas", "Bahia", "Ceará", "Espírito Santo", "Goiás", "Maranhão", "Mato Grosso", "Mato Grosso do Sul", "Minas Gerais", "Pará", "Paraíba", "Paraná", "Pernambuco", "Piauí", "Rio de Janeiro", "Rio Grande do Norte", "Rio Grande do Sul", "Rondônia", "Roraima", "Santa Catarina", "São Paulo", "Sergipe", "Tocantins")
	fmt.Println(len(estados), cap(estados))

	for i := 0; i < len(estados); i++ {
		fmt.Println(estados[i])
	}
}

from aprendago.

viniciussanchez avatar viniciussanchez commented on August 22, 2024

https://go.dev/play/p/II0Q-imj_HY

from aprendago.

AlissonAp avatar AlissonAp commented on August 22, 2024

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

from aprendago.

wfrsilva avatar wfrsilva commented on August 22, 2024

Cap. 9 – Exercícios: Nível #4 – 6
https://go.dev/play/p/YBMVuE8hUdX

image

from aprendago.

Levison-Jr avatar Levison-Jr commented on August 22, 2024

Adicionando os nomes dos estados com um append, ao invés de reatribuindo os valores ao slice, o array subjacente continua o mesmo (desde que não exceda sua capacidade estabelecida no make), evitando assim o custo computacional adicional de se criar outro array subjacente.

Para entender melhor, no código abaixo o slice criado tem capacidade 30, e usando o append, como a capacidade não é ultrapassada, a capacidade continua a mesma. Ou seja, o array subjacente não mudou.

Caso, ao invés de fazer com o append, fazer a reatribuição com estados = []string{...}, ao se verificar a capacidade, será exibida a capacidade igual ao length. Logo, o array subjacente não é mais o mesmo do que foi criado usando o make anteriormente. Para testar, copiando o código abaixo ou pelo link, basta comentar o slice criado a partir do append, e tirar o comentário do que foi criado pela reatribuição. https://go.dev/play/p/EF_OH7gjSkC

Essa observação foi feita em um comentário do vídeo, pelo Ronan, e notando fiz também os testes, mas realizando a adição dos elementos de um modo (append) diferente do sugerido lá. Sou iniciante na linguagem, não sei se tudo que comentei aqui faz sentido, mas deixo também observação.

No mais, deixo meu agradecimento à professora. Obrigado pelo curso Ellen, está muito bom mesmo.

package main

import "fmt"

func main() {
	estados := make([]string, 0, 30)
	
	//Usando o append
	estados = append(estados, "Acre", "Alagoas", "Amapá", "Amazonas", "Bahia", "Ceará", "Espírito Santo", "Goiás", "Maranhão", "Mato Grosso", "Mato Grosso do Sul", "Minas Gerais", "Pará", "Paraíba", "Paraná", "Pernambuco", "Piauí", "Rio de Janeiro", "Rio Grande do Norte", "Rio Grande do Sul", "Rondônia", "Roraima", "Santa Catarina", "São Paulo", "Sergipe", "Tocantins")
	
	//Reatribuindo
	//estados = []string{"Acre", "Alagoas", "Amapá", "Amazonas", "Bahia", "Ceará", "Espírito Santo", "Goiás", "Maranhão", "Mato Grosso", "Mato Grosso do Sul", "Minas Gerais", "Pará", "Paraíba", "Paraná", "Pernambuco", "Piauí", "Rio de Janeiro", "Rio Grande do Norte", "Rio Grande do Sul", "Rondônia", "Roraima", "Santa Catarina", "São Paulo", "Sergipe", "Tocantins"}

	fmt.Printf("len: %v || cap: %v\n\n", len(estados), cap(estados))
	
	for i := 0; i < len(estados); i++ {
		fmt.Println(i+1, ":", estados[i])
	}
}

from aprendago.

M3L1M avatar M3L1M commented on August 22, 2024

func main() {
estados := make([]string, 26, 26)
estados = []string{
"Acre", "Alagoas", "Amapá", "Amazonas",
"Bahia", "Ceará", "Espírito Santo", "Goiás",
"Maranhão", "Mato Grosso", "Mato Grosso do Sul", "Minas Gerais",
"Pará", "Paraíba", "Paraná", "Pernambuco",
"Piauí", "Rio de Janeiro", "Rio Grande do Norte", "Rio Grande do Sul",
"Rondônia", "Roraima", "Santa Catarina", "São Paulo",
"Sergipe", "Tocantins"}

fmt.Println(len(estados))
fmt.Println(cap(estados))

for i := 0; i < len(estados); i++ {
	fmt.Println(estados[i])
}

}

from aprendago.

adelsonsljunior avatar adelsonsljunior commented on August 22, 2024
package main

import (
	"fmt"
)

func main() {

	estados := make([]string, 26, 26)

	estados = []string{
		"Acre", "Alagoas", "Amapá", "Amazonas", "Bahia", "Ceará",
		"Espírito Santo", "Goiás", "Maranhão", "Mato Grosso",
		"Mato Grosso do Sul", "Minas Gerais", "Pará", "Paraíba",
		"Paraná", "Pernambuco", "Piauí", "Rio de Janeiro",
		"Rio Grande do Norte", "Rio Grande do Sul", "Rondônia",
		"Roraima", "Santa Catarina", "São Paulo", "Sergipe", "Tocantins"}

	for i := 0; i < len(estados); i++ {
		fmt.Println(estados[i])
	}

}

from aprendago.

binariarvore avatar binariarvore commented on August 22, 2024
package main

import "fmt"

func main() {
	estados := make([]string, 26, 26)
	valores := []string{"Acre", "Alagoas", "Amapá", "Amazonas", "Bahia", "Ceará", 
              "Espírito Santo", "Goiás", "Maranhão", "Mato Grosso", "Mato Grosso do Sul",
              "Minas Gerais", "Pará", "Paraíba", "Paraná", "Pernambuco", "Piauí", "Rio de Janeiro", 
              "Rio Grande do Norte", "Rio Grande do Sul",
	      "Rondônia", "Roraima", "Santa Catarina", "São Paulo", "Sergipe", "Tocantins"}
		
	for i, v := range valores {
		if i < len(estados) {
			estados[i] = v
		}
	}

	fmt.Println(len(estados), cap(estados))
	fmt.Println(estados[:])
}

from aprendago.

DominMFD avatar DominMFD commented on August 22, 2024

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

from aprendago.

thiagoCalazans-dev avatar thiagoCalazans-dev commented on August 22, 2024
// You can edit this code!
// Click here and start typing.
package main

import "fmt"

//- Crie uma slice usando make que possa conter todos os estados do Brasil.
//    - Os estados: "Acre", "Alagoas", "Amapá", "Amazonas", "Bahia", "Ceará", "Espírito Santo", "Goiás", "Maranhão", "Mato Grosso", "Mato Grosso do Sul", "Minas Gerais", "Pará", "Paraíba", "Paraná", "Pernambuco", "Piauí", "Rio de Janeiro", "Rio Grande do Norte", "Rio Grande do Sul", "Rondônia", "Roraima", "Santa Catarina", "São Paulo", "Sergipe", "Tocantins"
//- Demonstre o len e cap da slice.
//- Demonstre todos os valores da slice sem utilizar range.

func main() {
	slice := []string{"Acre", "Alagoas", "Amapá", "Amazonas", "Bahia", "Ceará", "Espírito Santo", "Goiás", "Maranhão", "Mato Grosso", "Mato Grosso do Sul", "Minas Gerais", "Pará", "Paraíba", "Paraná", "Pernambuco", "Piauí", "Rio de Janeiro", "Rio Grande do Norte", "Rio Grande do Sul", "Rondônia", "Roraima", "Santa Catarina", "São Paulo", "Sergipe", "Tocantins"}
	makeSlice := make([]string, len(slice), len(slice))
	makeSlice = []string{"Acre", "Alagoas", "Amapá", "Amazonas", "Bahia", "Ceará", "Espírito Santo", "Goiás", "Maranhão", "Mato Grosso", "Mato Grosso do Sul", "Minas Gerais", "Pará", "Paraíba", "Paraná", "Pernambuco", "Piauí", "Rio de Janeiro", "Rio Grande do Norte", "Rio Grande do Sul", "Rondônia", "Roraima", "Santa Catarina", "São Paulo", "Sergipe", "Tocantins"}

	fmt.Println(makeSlice, len(makeSlice), cap(makeSlice))

}```

from aprendago.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.