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

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: