Mostrando postagens com marcador slice. Mostrar todas as postagens
Mostrando postagens com marcador slice. Mostrar todas as postagens

quarta-feira, 10 de outubro de 2018

Programando em Go (Golang) - Slice part 2

Adicionando itens a um slice


Para adicionar um novo item a um slice utilizamos a função append. A função append recebe com parâmetro slice, e o valor que será adicionado ao mesmo, sendo que é possível passar mais que um parâmetro de valor para o slice.

Sintaxe:

 append (slice,valor,...,valor_n)

Onde


slice  - Nome do slide a ser atribuído.
valor,...,valor_n - Valores a serem adicionado ao slice

Exemplo: 


No exemplo abaixo vemos dois exemplos onde é possível ver adição de itens a um determinado slice.

package main

import ( "fmt")

func main (){
 var sliceNomes []string


 fmt.Printf("\n Total de itens no slice é : %d",len(sliceNomes))

 //No exemplo abaixo é adicionado um item ao slice sliceNomes

 sliceNomes=append(sliceNomes,"Maria")

 fmt.Printf("\n Total de itens no slice é : %d",len(sliceNomes))

 //No exemplo abaixo é adicionado três itens ao slice sliceNomes

 sliceNomes= append(sliceNomes,"John", "Dany", "Sansa")


 fmt.Printf("\n Total de itens no slice é : %d",len(sliceNomes))


}

Abaixo é possível ver o resultado da execução do programa acima no powershell (pode escolher o cmd também)..





Range


O range é comando utilizado para acessar de maneira mais simples e rápida os valores de um slice em um laço for.
Quando utilizamos o range é tornado para o programador dois valores: um int e outro do tipo de dado de  seu slice, abaixo é possível ver essa ação na sintaxe e exemplo abaixo.


Sintaxe:

for contador,valor :range slice{
 /...Ações a  serem tomadas
}

Onde:

contador - Variável do contador do laço.
valor - Contido na posição explicitada pelo contador dentro do slice.
slice - Slice a ser percorrido



Exemplo:


package main

import "fmt"

var nomes = []string{"Bruce", "Tony","Pietro", "Vanda", "Logan", "Wade"}

func main() {
for i, v := range nomes{
fmt.Printf("[%d] = %s\n", i, v)
}
}



Voltar para o menu

domingo, 30 de setembro de 2018

Programando em Go (Golang) - Slice part 1

O Slice é um array sem tamano fixo. O Slice quando criado é especificado a quantidade de itens que o mesmo tem, não a quantidade maxima que poderá ter como acontece com o array. Abaixo é possível ver a sintaxe básica para criação de um slice.

Sintaxe:

nome[inicio:fim]

Onde:

  • nome - Nome do slice
  • inicio - Índice Valor inicial do slice
  • fim - Índice do valor final do slince

Exemplo:

package main

import (
"fmt"
)

func main (){

numeros := [8]int{1,2,3,4,5,6,7,8}
selecao:=numeros[1:4]

fmt.Println("Numeros ",numeros)
fmt.Println("Selecao: ",selecao)

}

Neste exemplo é criado um slice que contém os valores 2,3,4 ou seja ele pegou os valores do índice 1 até o índice 4. Abaixo é possível visualizar o resultado da execução do programa acima.




Um slice não guarda nenhum tipo de dado ele apenas guarda uma parte do array, ou seja se o array for modificado o valor do mesmo também será alterado. Vide o exemplo abaixo:

package main

import (
"fmt"
)

func main (){

numeros := [8]int{1,2,3,4,5,6,7,8}
selecao:=numeros[1:4]

fmt.Println("Numeros ",numeros)

fmt.Println("Selecao: ",selecao)

fmt.Println("Alteração do valor do índice 2 para 44")

numeros[2]=44 //Nesse trecho é alterado o valor da posição 2 de 3                  //para 44

fmt.Println("Numeros ",numeros)

fmt.Println("Selecao: ",selecao)

}

Abaixo é possível ver a saída do programa acima:




Slice Incompletos


É possível criar slice com a omissão dos inicio e de fim:


Exemplos:



  • nome[1:10] - Slice com todos os parâmetros
  • nome[:10] - Slice com apenas o parâmetro de fim.
  • nome[1:] - Slice com apenas o parâmetro de inicio.
  • nome[:] - Slice sem ambos os parâmetros.

Slice literal


Um slice pode literal é como um array sem tamanho

Sintaxe:


nome:=[]tipo{va1,val2,..,valn}


Onde:


  • nome - Nome do slice
  • tipo - Tipo do slice
  • va1,val2,..,valn - Valores


Exemplo:


package main

import (
"fmt"
)

func main (){
 nSliceLiteral := []int{1,2,3,4,5,6,7,8}
 fmt.Println("Numeros ",nSliceLiteral)
}

Slice:  tamanho e capacidade

É possível verificar o tamanho e a capacidade de um slice atraves dos métodos len(s) e cap(s).

Saber o tamanho do slice.

Sintaxe:


len(slice) 

Onde:



  • slice - Nome do slice do qual será verificado o tamanho.


Para saber a capacidade de um slice utilizamos o método cap(s)

Sintaxe:


cap(slice) 

Onde:

  • slice - Nome do slice do qual será verificado o tamanho.

Exemplo:


package main

import (

"fmt"

)

func main (){

   array := [8]int{1,2,3,4,5,6,7,8}

   sl:=array[0:3]
   fmt.Println("Numeros ",sl)

   fmt.Printf("Tamanho: %d Capacidade: %d",len(sl),cap(sl))

}




Slice com make


É possível criar um slice com metodo make , essa é uma maneira de criar um array dinamico.


Criando slice com tamanho e make


Sintaxe :


 s := make([] tipo, tamanho)

Onde: 

  • s - Nome do slice.
  • tipo - Tipo do slice.
  • tamanho - Tamanho do slice.

Exemplo:
package main

import (

"fmt"

)

func main (){

   sl:= make([]int,2)

   fmt.Println("Numeros ",sl)

   fmt.Printf("Tamanho: %d Capacidade: %d",len(sl),cap(sl))

}

Criando slice com tamanho e capaciade através do make


Sintaxe :


 s := make([] tipo, tamanho,capacidade)

Onde: 

  • s - Nome do slice.
  • tipo - Tipo do slice.
  • tamanho - Tamanho do slice.
  • capacidade - Capacidade do slice.

Exemplo:

package main

import (

"fmt"

)

func main (){

   sl:= make([]int,2,5)

   fmt.Println("Numeros ",sl)

   fmt.Printf("Tamanho: %d Capacidade: %d",len(sl),cap(sl))

}



Saída do programa acima: