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)
}
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")
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: