Avec des connaissances de bas niveau, vous serez un ingénieur autonome! Je l'ai envoyé à moi-même qui était enthousiaste à l'idée d'apprendre le langage C mais je ne trouvais rien de amusant.
Si vous souhaitez créer une application Web, je pense que Node et Rails suffisent pour le moment. Pour les applications de bureau, utilisez Electron. Ceux qui veulent utiliser Go ou quelque chose comme une application de terminal ou un système qui utilise les fonctions du système d'exploitation (le Docker et GitHub CLI récemment populaires sont également fabriqués par Go, donc si vous pouvez l'utiliser, vous pouvez jouer).
Pour décider si vous voulez apprendre Go, créons une application Web simple (allez-y et dites Hello World).
Je ne savais pas si je pouvais faire confiance à Go, alors je le ferai avec Docker pour ne pas polluer l'environnement. Si c'est intéressant, j'aimerais voir l'intérieur avec un développeur, donc je vais construire l'environnement localement.
La structure des répertoires est la suivante. Placez le fichier go dans le répertoire compileFile et créez-le.
compileFile (annuaire)
Dockerfile
docker-compose.yml
# Dockerfile
FROM golang:latest
RUN mkdir -p /go/src
docker-compose.yml
version: '3'
services:
go:
build: .
ports:
- "8080:8080"
volumes:
- ./compileFile:/go/src
working_dir: /go/src
Entrez dans le conteneur et vérifiez la commande go.
Notez que vous ne pouvez pas connecter 8080 ports sauf si vous spécifiez --service-ports.
Assurez-vous que vous pouvez transférer correctement avec docker ps
.
$ docker-compose run --service-ports go /bin/bash
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
af4f9c066ecd golean_go "/bin/bash" 7 seconds ago Up 2 seconds 0.0.0.0:8080->8080/tcp golean_go_run_a79a836040ab
Pour l'instant, essayez de taper «go» pour voir quelles commandes vous pouvez utiliser.
Go is a tool for managing Go source code.
Usage:
go <command> [arguments]
The commands are:
bug start a bug report
build compile packages and dependencies
clean remove object files and cached files
doc show documentation for package or symbol
env print Go environment information
fix update packages to use new APIs
fmt gofmt (reformat) package sources
generate generate Go files by processing source
get add dependencies to current module and install them
install compile and install packages and dependencies
list list packages or modules
mod module maintenance
run compile and run Go program
test test packages
tool run specified go tool
version print Go version
vet report likely mistakes in packages
Use "go help <command>" for more information about a command.
Additional help topics:
buildconstraint build constraints
buildmode build modes
c calling between Go and C
cache build and test caching
environment environment variables
filetype file types
go.mod the go.mod file
gopath GOPATH environment variable
gopath-get legacy GOPATH go get
goproxy module proxy protocol
importpath import path syntax
modules modules, module versions, and more
module-get module-aware go get
module-auth module authentication using go.sum
module-private module configuration for non-public modules
packages package lists and patterns
testflag testing flags
testfunc testing functions
Use "go help <topic>" for more information about that topic.
go build`` go run`` go fmt
sera probablement utilisé dans un proche avenir.
Je voulais comprendre Go à partir d'une application Web familière. Écrivez un programme qui affiche Hello World sur le navigateur tout en examinant l'exemple de code.
server/main.go
package main
import "io"
import "net/http"
func mainHandler(w http.ResponseWriter, req *http.Request) {
io.WriteString(w, `Hello World!!!`)
}
func main(){
http.HandleFunc("/main", mainHandler)
http.ListenAndServe(":8080", nil)
}
Vous pouvez le formater avec une seule commande, alors construisez-le après le formatage! Au fait, je suis en colère s'il y a une position de saut de ligne ou un paquet inutilisé, peut-être que le linter fonctionne également au moment de la construction.
Une fois construit, un fichier exécutable avec le nom de répertoire contenant le fichier go a été créé.
$ go fmt
$ go build
$ ls
server main.go
$ ./server
Lorsque j'ai visité http: // localhost: 8080 / main, j'ai pu confirmer Hello World!
À propos, si vous souhaitez l'exécuter sur Mac, vous pouvez le compiler pour Mac ci-dessous.
$ GOOS=darwin GOARCH=amd64 go build
Commençons par un endroit facile à comprendre. Il semble que vous puissiez configurer un serveur avec cela. Il semble que le premier argument est la spécification du port et le second argument est le Handler, et dans le cas de nil, le DefaultServeMux par défaut est utilisé.
http.ListenAndServe(":8080", nil)
En lisant la documentation, vous trouverez les éléments suivants:
HandleFunc registers the handler function for the given pattern in the DefaultServeMux.
The documentation for ServeMux explains how patterns are matched.
Il dit que vous pouvez enregistrer un gestionnaire correspondant au modèle d'URL dans DefaultServerMux avec HandleFunc. Pensez-y comme quelque chose de routage.
Ainsi, ce qui suit peut être lu comme l'exécution du traitement de mainHandler après avoir accédé à / main.
http.HandleFunc("/main", mainHandler)
Le paquet io sait ce que vous faites, je vais donc le laisser.
Facile à entrer avec une infusion.
$ brew install go
$ go version
go version go1.15.3 darwin/amd64
REPL est également inclus. Cela ne fonctionnait pas avec gore v0.5.0, donc je laisse tomber la version.
#Vous pouvez le faire et l'installer, mais vous n'en aurez peut-être pas besoin.
$ export GO111MODULE=on
$ go get github.com/motemen/gore/cmd/[email protected]
$ gore -version
gore 0.4.0 (rev: HEAD/go1.15.3)
Si vous l'installez par erreur, vous pouvez le supprimer ci-dessous.
$ go clean -i github.com/motemen/gore/cmd/gore
À propos, avec la v0.5.0, le message d'erreur suivant apparaît.
gore: could not load 'fmt' package: err: exit status 1: stderr: build flag -mod=mod only valid when using modules
Maintenant que l'environnement local est en place, il ne vous reste plus qu'à jouer.
Je souhaite utiliser Go pour le développement Web! Je ne me sens pas comme ça, mais au moins je l'ai trouvé plus amusant que C! Je veux créer une application de terminal ou quelque chose comme ça. Pour le moment, afin d'apprendre à utiliser Go, j'ai pensé essayer de le créer à partir d'une simple application Web en utilisant un framework ou quelque chose.
Recommended Posts