Compartilhamento de tecnologia

Tutorial detalhado do idioma Go

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

A linguagem Go, também conhecida como Golang, é uma linguagem de programação de código aberto desenvolvida pelo Google. Ele foi projetado para fornecer velocidade de desenvolvimento eficiente, bom desempenho, sintaxe concisa e biblioteca padrão poderosa. A linguagem Go é particularmente adequada para a construção de sistemas distribuídos e arquiteturas de microsserviços em grande escala. Este artigo ajudará você a aprender a linguagem Go do zero, abordando sintaxe básica, recursos avançados, práticas recomendadas e aplicações práticas.

Veja o código-fonte do projeto na parte inferior

1. Noções básicas da linguagem Go

1.1 Instale o ambiente Go

Primeiro, você precisa instalar o ambiente Go em seu computador. Visite o site oficial do Go (https://golang.org/dl/) Baixe o pacote de idiomas Go adequado ao seu sistema operacional e siga as instruções para instalá-lo.

1.2 Programa Olá Mundo

Ir

versão escura

  1. 1package main
  2. 2
  3. 3import "fmt"
  4. 4
  5. 5func main() {
  6. 6 fmt.Println("Hello, World!")
  7. 7}

1.3 Tipos de dados

A linguagem Go fornece uma variedade de tipos de dados integrados, incluindo inteiros (int, int8, int16, int32, int64), tipos de ponto flutuante (float32, float64), booleano (bool), string (string), etc.

1.4 Estrutura de controle

A linguagem Go suporta instruções if, loops for, instruções switch e instruções defer para controlar o fluxo do programa.

1.5 Funções

Funções são a unidade básica de execução da linguagem Go. As funções podem aceitar parâmetros e retornar resultados.

Ir

versão escura

  1. 1func add(x int, y int) int {
  2. 2 return x + y
  3. 3}

1.6 Ponteiros

Ponteiros são usados ​​na linguagem Go para manipular diretamente endereços de memória.usando*e&Operador, você pode obter o endereço de uma variável e o valor apontado pelo endereço.

Ir

versão escura

  1. 1func increment(p *int) {
  2. 2 *p++
  3. 3}

2. Linguagem Go avançada

2.1 Interface

Uma interface em Go define um conjunto de métodos que um tipo deve implementar. As interfaces tornam o código mais flexível e reutilizável.

Ir

versão escura

  1. 1type Shape interface {
  2. 2 Area() float64
  3. 3}
  4. 4
  5. 5type Circle struct {
  6. 6 Radius float64
  7. 7}
  8. 8
  9. 9func (c Circle) Area() float64 {
  10. 10 return math.Pi * c.Radius * c.Radius
  11. 11}

2.2 Tratamento de erros

A linguagem Go recomenda o uso de valores de retorno de erro para lidar com exceções.

Ir

versão escura

  1. 1func divide(x, y int) (int, error) {
  2. 2 if y == 0 {
  3. 3 return 0, errors.New("cannot divide by zero")
  4. 4 }
  5. 5 return x / y, nil
  6. 6}

2.3 Simultaneidade e goroutine

O modelo de simultaneidade da linguagem Go é baseado em goroutines e canais leves. Goroutine é um thread de nível de usuário na linguagem Go, e o canal é usado para comunicação e sincronização entre goroutines.

Ir

versão escura

  1. 1func say(s string) {
  2. 2 for i := 0; i < 5; i++ {
  3. 3 fmt.Println(s)
  4. 4 }
  5. 5}
  6. 6
  7. 7func main() {
  8. 8 go say("world") // 开始一个新的goroutine
  9. 9 say("hello")
  10. 10}

2.4 Context

O contexto é usado para passar sinais de cancelamento entre goroutines, permitindo ao programa encerrar normalmente goroutines de longa execução.

Ir

versão escura

  1. 1func main() {
  2. 2 ctx, cancel := context.WithCancel(context.Background())
  3. 3 go func() {
  4. 4 select {
  5. 5 case <-ctx.Done():
  6. 6 fmt.Println("operation canceled")
  7. 7 case <-time.After(time.Second * 3):
  8. 8 fmt.Println("operation completed")
  9. 9 }
  10. 10 }()
  11. 11 time.Sleep(time.Second)
  12. 12 cancel()
  13. 13}

3. Siga as melhores práticas de linguagem

3.1 Organização do código

A linguagem Go recomenda o uso de uma abordagem modular para organizar o código. Cada diretório representa um pacote e define um ou mais arquivos .go nele.

3.2 Gerenciamento de dependências

Sistema de módulo Go (go mod ) é usado para gerenciar dependências externas do projeto.usargo getego mod tidyComandos para adicionar e organizar dependências.

3.3 Teste

A linguagem Go possui uma estrutura de teste poderosa integrada, usetestingpacote para escrever casos de teste.

Ir

versão escura

  1. 1import (
  2. 2 "testing"
  3. 3)
  4. 4
  5. 5func TestAdd(t *testing.T) {
  6. 6 tests := []struct {
  7. 7 x, y, want int
  8. 8 }{
  9. 9 {2, 2, 4},
  10. 10 {1, 3, 4},
  11. 11 {0, 0, 0},
  12. 12 }
  13. 13 for _, tt := range tests {
  14. 14 got := add(tt.x, tt.y)
  15. 15 if got != tt.want {
  16. 16 t.Errorf("add(%d, %d) = %d; want %d", tt.x, tt.y, got, tt.want)
  17. 17 }
  18. 18 }
  19. 19}

3.4 Construir e implantar

usargo buildComando para construir o arquivo executável, usego installInstale o projeto em$GOPATH/bindiretório para facilitar chamadas do sistema.

4. Aplicação prática da linguagem Go

A linguagem Go é amplamente utilizada em serviços de back-end, programação de rede, arquitetura de microsserviços, ferramentas DevOps, bancos de dados, middleware e outros cenários.

4.1 Arquitetura de microsserviços

A natureza de alta simultaneidade da linguagem Go a torna a escolha ideal para a construção de microsserviços.

4.2 Programação de rede

A biblioteca padrão da linguagem Go fornece uma rica API de programação de rede, incluindo servidor HTTP, cliente, WebSocket, TCP/IP, etc.

4.3 Ferramentas DevOps

A linguagem Go possui velocidade de compilação rápida e forte portabilidade, e é adequada para o desenvolvimento de ferramentas DevOps, como orquestração de contêineres, integração contínua e ferramentas de implantação contínua.

5. Resumo

A linguagem Go tornou-se gradualmente uma das principais linguagens para o desenvolvimento de software moderno, com sua sintaxe concisa, biblioteca padrão poderosa e modelo de simultaneidade eficiente. Ao estudar este artigo, você não apenas dominará o conhecimento básico da linguagem Go, mas também compreenderá seus recursos avançados e práticas recomendadas, estabelecendo uma base sólida para o desenvolvimento futuro da linguagem Go. Esteja você construindo serviços back-end de alto desempenho ou desenvolvendo sistemas distribuídos complexos, a linguagem Go será seu parceiro indispensável.

Endereço para download do código-fonte do projeto:https://download.csdn.net/download/qq_42072014/89531977