Mostrando postagens com marcador o que é. Mostrar todas as postagens
Mostrando postagens com marcador o que é. 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:




sexta-feira, 3 de fevereiro de 2012

O que é NullPointerException ?

 

"Quem nunca tomou um NullPointerException atire o primeiro mouse."

Quando uma pessoa começa a caminhar o longo caminho do mundo da programação um erro comum com qual se defronta é com o famoso e não querido NullPointerException, mas o que vem a ser esse obstaculo na vida de um programador e como resolvê-lo ? Para resolver tais estão publiquei essa essa dica que explica de forma bem simples o que é e como resolver um caso simples de NullPointerException.


Como ocorre ?

O NullPointerException ou NullPointer para os mais íntimos ocorre quando tenta-se utilizar um atributo ou método de um objeto que não fora inicializado. (Que esteja no estado null). Um exemplo pode ser visto no código abaixo:


package com.blogspot.maguscode;

public class TesteNullPointer {

   
    public static void main(String args[])
    {
        Carro carro = null;
        carro.setMarca("Gol");
        System.out.println("Marca do carro é:"+carro.getMarca());
    }
}


Quando esse código é executando o resultado é um NullPointerException como pode ser visto na figura abaixo:



 Neste caso o objeto Carro não foi instaciado e seu estado permaneceu nulo, quando foi tentado inserir um valor a seu atributo marca foi lançado um NullPointerException pois o objeto Carro em questão não existia em lugar algum. É como se tenta-se localizar uma casa com um determinado número em uma cidade que não existe.
De grosso modo o NullPointer acontece quando tentamos acessar um atributo em um objeto que não existe.


Como solucionar ?

Uma solução para matar o NullPointer seria verificar se o objeto está instancianciado caso não esteja instancia-lo ou simplismente instância-lo quando o mesmo for criado como no exemplo abaixo:



package com.blogspot.maguscode;

public class TesteNullPointer {

   
    public static void main(String args[])
    {
        Carro carro = new Carro();
        carro.setMarca("Gol");
        System.out.println("Marca do carro é:"+carro.getMarca());
    }