# Les bases

## Clean architecture Go

[![Untitled.png](https://wiki2.nospy.fr/uploads/images/gallery/2022-05/scaled-1680-/zOxuntitled.png)](https://wiki.nospy.fr/uploads/images/gallery/2022-05/zOxuntitled.png)

## Le playground

[https://play.golang.org/](https://play.golang.org/)

### Bonjour monde

```go
package main 
 
import "fmt" 
 
func main() { 
  fmt.Println("Hello, World!") 
}

```

## Les types

Langage fortement typé, avec possibilités de faire de l'inférence.

On peut déclarer une variable avec un type de plusieurs façons.

### Les types basiques

```go
bool             // true / false 
 
string           // "Hello", "Goodbye" 
 
int  int8  int16  int32  int64 
uint uint8 uint16 uint32 uint64 uintptr
				 // 10, 20, 42255
 
byte             // 01001110 ==> stockage sur un octet (alias de uint8)

rune             // alias de int32
 
float32 float64  // 3.14 ==> équivalent à float et double

```

### Déclaration d'une variable

```go
var number int = 20
var age int          // = 0

var firstname string = "Nou"
var lastname string  // = ""

```

### Déclaration par inférence

```go
number := 10

firstname := "Nono"

```

<p class="callout success">On peut aussi utiliser les décalages de bits ! ( &gt;&gt; , &lt;&lt;).   
Non ça n'est pas un smiley   
</p>

### Cast

```go
var n int = 42
f := float64(n) + .42
fmt.Printf("float=%f\n", f)

```