1. Introdução
1. Novos desafios no desenvolvimento de software
- Arquitetura de hardware multinúcleo
- Cluster de computação distribuída em escala ultralarga
- Escala de desenvolvimento sem precedentes e velocidade de atualização do desenvolvimento web.
BAT, Didi e outras empresas estão usando-o, e Zhihu abandonou o Python e mudou para o Go. Docker e K8s também são usados, também conhecidos como linguagens de desenvolvimento em nuvem. Outra linguagem de desenvolvimento blockchain.
2. Recursos que os desenvolvedores gostam
- Simples, 25 palavras-chave
- Suporte integrado à simultaneidade, coleta de lixo
- Linguagem estática compilada e eficiente
- Produtividade, introdução clara ao gerenciamento de dependências, design de tipo de interface exclusivo, restrições de programação. Consulte a operação do iOS para cortar muito. Da avenida à simplicidade.
3. Mal-entendidos
O controle de simultaneidade de memória compartilhada ignora o mecanismo de simultaneidade CSP da própria linguagem Go. Além disso, existem armadilhas causadas pela deselegância do Java.
4. Instalação do Google e documentação oficial
- Perguntas frequentes (FAQ) - A linguagem de programação Go
- A linguagem de programação Go (google.cn)
2. Escreva o primeiro programa Go
1. Construção do ambiente de desenvolvimento
GOPATO:
- Esta variável de ambiente deve ser definida antes da versão 1.8
- Após a versão 1.8 (incluindo 1.8), se não houver configuração, o valor padrão será usado.
- O padrão é 0 no Unix
$HOME/go
e 0 no Windows%USERPROFILE%/go
. - No Mac, GOPATH pode
~/.bash_profile
ser definido modificando o arquivo .
2. Escreva um programa Go
// 查看 Go 版本
go version
// 创建 Go 学习的总目录 d:\Gocode
// src 是源码路径,在下面建立 ch1/main/hello_world.go,记得 helloworld 文件拓展名记得要写 go
package main
import "fmt"
func main() {
fmt.Println("Hello World")
}
//在 cmd 里面:
>d:
>cd d:\Gocode\src\ch1\main
// 运行代码
go run hello_world.go
// 编译代码,会生成一个 hello_world 的二进制文件,执行这个二进制文件也会直接回显出来 Hello World
go build hello_world.go
// Go 在默认情况下都会使用静态连接,编译完的 Go 程序是一个独立的二进制文件,有很好的便携性。可以拷贝到不同的机器上运行
3. Estrutura básica do programa
package main // 包,表明代码所在的模块(包)
import "fmt" // 引入的代码依赖
// 功能实现
func main() {
fmt.Println("Hello World")
4. Entrada do aplicativo
- Deve ser
main
um pacote:package main
(A declaração do pacote deve ser principal, mas o nome do diretório não precisa ser principal)
// 新建一个目录`\Gocode\src\ch1\hello`,把前面的`hello_world.go`文件复制过去,依然执行正常
> go run hello_world.go
Hello World
//但如果把`hello_world.go`里面的`package main`改成`package main1`再`go run`运行就会报错
> go run hello_world.go
package command-line-arguments is not a main package
- Deve ser
main
um método:func main()
- O nome do arquivo não precisa ser
main.go
5. Valor de retorno de saída
Diferenças de outras linguagens de programação importantes:
- Funções em Go
main
não suportam nenhum valor de retorno os.Exit
Status de retorno por
package main
import (
"fmt"
"os"
)
func main() {
fmt.Println("Hello World")
os.Exit(-1)
}
Resultado de saída:
> go run hello_world.go
Hello World
exit status 255
6. Obtenha parâmetros de linha de comando
Diferenças de outras linguagens de programação importantes
main
A função não suporta passagem de parâmetrosos.Args
Obtenha parâmetros de linha de comando diretamente no programa através
package main
import (
"fmt"
"os"
)
func main() {
fmt.Println(os.Args)
fmt.Println("Hello, world!")
os.Exit(-1)
}
Adicione um parâmetro para executar o arquivo e gerar um comando binário e nossos parâmetros de linha de comando.
>go run hello_world.go ddao
[C:\Users\xxxxxxxx\xxx\xxxxxxxxxx\go-build2455331386\b001\exe\hello_world.exe ddao]
Hello, world!
exit status 255
package main
import (
"fmt"
"os"
)
func main() {
if len(os.Args) > 1 {
fmt.Println("Hello, world!", os.Args[1])
}
}
>go run hello_world.go ddao
Hello, world! ddao