> For the complete documentation index, see [llms.txt](https://lunes-labs.gitbook.io/dao-lunes-labs-pt/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://lunes-labs.gitbook.io/dao-lunes-labs-pt/developers/para-desenvolvedores/smart-contract-ink-4.x/fundamentos/lendo-valores-do-armazenamento.md).

# Lendo Valores do Armazenamento

Ler do armazenamento é onde a diversão começa!

### Funções do Contrato[​](https://use.ink/basics/reading-values#contract-functions) <a href="#contract-functions" id="contract-functions"></a>

Como você pode ver no modelo de contrato, todas as funções do seu contrato fazem parte do módulo do contrato.

```rust
impl MyContract {
    // Public and Private functions can go here
}
```

#### Funções Públicas e Privadas[​](https://use.ink/basics/reading-values#public-and-private-functions) <a href="#public-and-private-functions" id="public-and-private-functions"></a>

Em Rust, você pode criar quantas implementações quiser. Como escolha de estilo, recomendamos separar as definições de implementação para suas funções privadas e públicas:

```rust
impl MyContract {
    /// Public function
    #[ink(message)]
    pub fn my_public_function(&self) {
        /* --snip-- */
    }

    /// Private function
    fn my_private_function(&self) {
        /* --snip-- */
    }

    /* --snip-- */
}
```

Você também pode escolher dividir as coisas da maneira mais clara para o seu projeto.

Observe que todas as funções públicas devem usar o atributo `#[ink(message)]`.

### Obtendo um Valor[​](https://use.ink/basics/reading-values#getting-a-value) <a href="#getting-a-value" id="getting-a-value"></a>

Nós já mostramos como inicializar um valor de armazenamento no capítulo [Armazenando Valores](https://use.ink/basics/storing-values). Obter o valor é tão simples quanto isso:

```rust
impl MyContract {
    #[ink(message)]
    pub fn my_getter(&self) -> u32 {
        self.number
    }
}
```

Em Rust, se a última expressão em uma função não tiver um ponto-e-vírgula, ela será o valor de retorno.
