Comienza a desarrollar con Go en la Mac

Lo que vas a crear

Las aplicaciones web son parte de la vida en estos días. los Ir El lenguaje, de Google, es un lenguaje útil para hacer aplicaciones basadas en web. Te mostraré cómo empezar a usar Go en una Mac.

Configuración del entorno Go

La forma más fácil de instalar el Ir lenguaje de programación es por Homebrew. Si no has instalado Homebrew sin embargo, el tutorial Homebrew Demystified: Ultimate Package Manager de OS X te mostrará cómo.

En una terminal, escriba:

instalar cerveza 
Encontrando la instalación de go

Para encontrar la ubicación de la ir Instale el directorio, escriba este comando en su programa de terminal:

ls -la 'que va' 

Deberías obtener este resultado:

lrwxr-xr-x 1 raguay wheel 25 May 14 15:11 / usr / local / bin / go ->… /Cellar/go/1.2.2/bin/go 

Esto demuestra que la instalación principal de Ir es /usr/local/Cellar/go/1.2.2. Necesitas configurar la variable de entorno. GOROOT ser el libexec directorio de ese directorio.

En el directorio de inicio, crea el directorio. ir. los ir Idioma almacenará todos los paquetes descargados allí. Añade a tu .Bashrc archivo y / o .zshrc archiva esta linea:

exportar GOPATH = "/ Usuarios // go "exportar GOROOT =" // libexec " 

Si está usando pescado, agregue esto a su config.fish expediente:

set -xg GOPATH "/ Usuarios // ir "set -xg GOROOT" // libexec " 

Para probar, escriba lo siguiente en un terminal:

ir versión 

Se debe imprimir la versión, de ir, que se instala En mi sistema en este momento, se muestra ir versión go1.2.2 darwin / amd64.

Para comprobar si hay nuevas versiones, vamos a HomeBrew darse cuenta de eso. En la línea de comando, escriba:

actualización de cerveza mejora de cerveza 

los actualizar comando obtendrá una lista de programas actualizados. los mejorar comando hace la actualización real. De esta manera, nunca tendrá que buscar en los diferentes sitios web para encontrar actualizaciones..

Configuración del editor

Ahora eso Ir está en el sistema, necesita configurar el editor. yo suelo Texto sublime 3, Empuje, y Emacs mucho. Por lo tanto, necesito que mis editores estén al día con Ir.

por Texto sublime, es fácil. Instale el Administrador de paquetes para texto sublime. Esto permite una fácil instalación de paquetes. El paquete que desea instalar es goSublime. goSublime te dio Ir resaltado de sintaxis de lenguaje y una Ir construir sistema.

Instalar Ir resaltado de sintaxis para Emacs, instala las rutinas eLisp encontradas en $ GOROOT / misc / emacs a su carpeta de emacs elisp. por Emacs para cargar los nuevos archivos, agregue esta línea a la .emacs archivo en la carpeta de inicio:

(requiere 'go-mode-load) 

El soporte para Empuje lleva más trabajo. En una terminal, ejecute estos golpetazo líneas de comando:

mkdir -p $ HOME / .vim / ftdetect mkdir -p $ HOME / .vim / sintaxis mkdir -p $ HOME / .vim / autoload / go ln -s $ GOROOT / misc / vim / ftdetect / gofiletype.vim $ HOME / .vim / ftdetect / ln -s $ GOROOT / misc / vim / syntax / go.vim $ HOME / .vim / sintaxis ln -s $ GOROOT / misc / vim / autoload / go / complete.vim $ HOME / .vim / autoload / go echo "sintaxis en" >> $ HOME / .vimrc 

La última línea solo es necesaria si aún no tiene sintaxis en en tus .vimrc.

Las bibliotecas y cómo usarlas

Tradicionalmente, las bibliotecas son lo básico de modularizar el código para su reutilización. En ir, Las bibliotecas son paquetes. El lenguaje Go viene con muchos paquetes incorporados. Puedes escanearlos en la página de paquetes. También hay muchos paquetes y proyectos de terceros..

Para el Servidor de mayúsculas y minúsculas, Voy a utilizar el paquete de terceros web.go. Es un marco de servidor web simple que simplifica la creación de aplicaciones basadas en web en Ir. Para cargar ese paquete en su sistema, escriba lo siguiente:

Ve a instalar github.com/hoisie/web 

los instalar comando toma un argumento que es una dirección web, sin el http: //, para un paquete para descargar. Se coloca en el directorio $ GOPATH que se creó anteriormente..

El Proyecto: Title Case Server

El caso del título es una de las cosas más delicadas. A algunas personas les gustan ciertas palabras siempre en minúscula. Otros piensan que las palabras deben ser todo caso de título. Por lo tanto, para hacerlo correctamente (lo que la mayoría de las rutinas de paquetes no hacen), tiene que comparar cada palabra con dos diccionarios de palabras para que todo salga bien. Hace un gran proyecto para principiantes en un nuevo lenguaje de programación..

// // Paquete: Principal // // Descripción: Este es el paquete principal para goTitleServer. // Este es un caso de título basado en tecnología web simple // servidor de texto. // paquete principal 

los // El símbolo denota un comentario. El compilador ignora todo después de eso en la línea. Me gusta comentar todo. Cuando lees el código años más tarde, los comentarios te ayudan a recordar cómo funciona el programa..

La línea después de los comentarios es la declaración del paquete. Cada archivo que Ir Usos tiene que ser parte de un paquete. Cada programa tiene una sola principal paquete que tiene que tener el principal() función. Eso le dice al compilador dónde comenzar a ejecutar el programa.

// // Importar las bibliotecas que necesitamos para el servidor. // importar ("github.com/hoisie/web" "os" "cadenas") 

Para hacer uso de los paquetes, tienes que importar ellos. Todos los paquetes utilizados deben estar en esta declaración. Estoy incluyendo los dos paquetes base de os para las funciones del sistema operativo, y instrumentos de cuerda Para manipular cuerdas. los github.com/hoisie/web carga el web.go paquete para hacer el servidor web.

// // Función: homePage // // Descripción: Esta función servirá la página de inicio para ingresar la cadena // para convertir. // func homePage () string return '     Servidor de mayúsculas y minúsculas        

Servidor de mayúsculas y minúsculas

Texto para corregir:

Resultados:

'

Esta función crea la página de inicio. Esto es lo que el servidor le da a un navegador web que solicita la primera página del sitio web. los función El comando es una declaración de función. los página principal Es el nombre de la función. los () le dice al compilador que esta función no toma ninguna entrada. los cuerda después del paréntesis le dice al compilador que la función devolverá una cadena.

Todo dentro de la Es el código para la función. Esta función es simple: regreso La cadena citada al llamante de la función. En ir, puedes citar cadenas con "", ", y ". Utilicé la última aquí para tener una cadena de múltiples líneas que no se procesó en absoluto. Usted llama a eso una cadena literal.

Al utilizar el método de cita literal, puedo diseñar la página web como lo haría normalmente. El compilador no procesa nada dentro de las marcas. Se copia directamente en el programa, y ​​el programa lo devuelve al navegador web cuando se lo solicita..

// // Función: titleCase // // Descripción: Esto toma una cadena y la convierte en el caso Título. Entonces // devuelve la cadena. // // Entrada: // val resto de la url si se da alguna. // func titleCase (ctx * web.Context, cadena de valores) string // // Obtenga la cadena para convertirla y dividirla por espacios. // palabras: = cadenas.Split (ctx.Params ["text"], "") // // El conjunto de palabras que siempre deben ir en minúsculas, a menos que sea la primera palabra // del título. // inferior: = [...] cadena "a", "an", "y", "at", "as", "pero", "by", "for", "if", "in", "on", "or", "is", "with", "a", "the", "of", "vs", "vs.", "via", "via", "en" / / // El conjunto de palabras que deberían estar siempre en mayúsculas. // superior: = [...] cadena "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "HTML", "CSS", "AT&T", "PHP" // // Para cada palabra en el Título. // para i, _: = rango palabras // // Supongamos que la palabra no está en mayúsculas o en minúsculas. // arriba: = falso bajo: = falso // // Recorre cada palabra en la matriz de minúsculas. // para j, _: = rango inferior if strings.ToLower (words [i]) == lower [j] // // Coincide. Asegúrese de que la palabra en la matriz es la misma. // Establecer la bandera arriba como verdadera. // palabras [i] = inferior [j] bajo = verdadero // // Recorrer cada palabra en la matriz de mayúsculas. // para k, _: = rango superior if strings.ToUpper (palabras [i]) == upper [k] // // Coincide. Asegúrese de que la palabra es la matriz es la misma. // Establecer el indicador bajo en verdadero. // palabras [i] = superior [k] up = verdadero // // Si la palabra no estaba en la matriz superior o inferior, realice una conversión normal de // títulos. Esto hace que la primera letra sea mayúscula y todas las // letras en minúscula. // if (! up) && (! low) words [i] = strings.Title (words [i]) // // ¡Asegúrese de que la primera palabra sea el título del título! // palabras [0] = cadenas. Título (palabras [0]) // // Devuelva el Título uniendo todas las palabras con un espacio. // devolver cadenas.Join (palabras, "") 

Este código hace el trabajo de traducir una cadena asignada al servidor web en el título del caso equivalente.

los ctx * web.Context, cadena de valores le dice al compilador que esta función recibe dos variables. Uno es un puntero a la web.contexto estructura de datos definida en el web.go paquete. El otro es una cuerda. Usted declara una entrada de variable por un nombre y el tipo de variable.

los * El símbolo denota un puntero. Un puntero es una dirección a la ubicación en memoria para la estructura de datos. Ir sigue do formatos de puntero de datos.

La primera declaración obtiene el parámetro denominado texto Que el navegador pasa al servidor y lo divide por espacios. los cuerdas. dividir llama al División función dentro de la instrumentos de cuerda paquete. Puedes pensar en paquetes similares a Objetos en C ++. Los llamas usando un . entre el nombre del paquete y el nombre de la función.

En cada paquete, cada función que comienza con una letra mayúscula es accesible desde fuera del paquete. Cada función que comienza con una letra minúscula solo es accesible desde el interior del paquete.

Cuando el cuerdas. dividir La función divide una cadena por el separador, devuelve una matriz de cadenas. La salida se asigna a la variable. palabras. Para crear una nueva variable, la primera vez que se use, debe usar un : = para asignarlo. Si desea cambiar la misma variable a otra matriz de cadenas, usaría el = operador.

A continuación, crea dos matrices para las diferentes listas de palabras. inferior es para todas las palabras en minúscula, y Superior para todas las palabras en mayúsculas. los […] le dice al compilador que obtenga el número de asignaciones de los datos. De esa forma, puede agregar palabras a la lista sin preocuparse por aumentar el conteo. los cuerda le dice al compilador que cada entrada en la matriz es una cadena.

estoy usando para ... rango Bucles para secuenciar sobre las matrices. El primero repasa cada palabra dada en la entrada, mientras que otros dos bucles recorren cada diccionario de palabras para cada palabra. Primero convierte la palabra a minúsculas, la compara con cada palabra en el inferior diccionario. Si hay una coincidencia, fuerza la palabra a minúsculas asignando la posición de esa palabra a la cadena en el diccionario. Entonces hace exactamente lo mismo usando el Superior diccionario.

Si la palabra fuera no en cualquier diccionario, entonces realiza la cuerdas.título Función a la palabra. Esto obliga a que la primera letra sea mayúscula y todo el resto en minúscula..

Por último, la primera palabra hecha título de caso no importa qué. los cuerdas. La función ensambla la matriz de cadenas utilizando un espacio. Devuelve los resultados al llamante de la función..

// // Función: killServer // // Descripción: Esta función detendrá el servidor. // func killServer () string os.Exit (0) return "" 

los killServer La función hace exactamente lo que su nombre implica: mata el servidor web. Envuelve una llamada a la os.Exit () función en el os paquete.

// // Función: principal // // Descripción: Esta es la función principal que se llama al ejecutar el programa. // func main () // // establece la dirección web de titlecase en la función adecuada. // web.Get ("/ titlecase /(.*)", titleCase) // // Configurar una ruta para matar el servidor. // web.Get ("/ kill", killServer) // // envía la página de inicio a la función adecuada. // web.Get ("/", homePage) // // Ejecute el servidor en la máquina local en el puerto 9911 // web.Run ("127.0.0.1:9910") 

los principal usos de la función web.Get para configurar el Obtener rutas de protocolo para la página de inicio, la página de eliminación y la rutina de conversión de títulos y casos. los web es el web.go paquete que hemos descargado anteriormente. los Obtener define un Obtener HTML solicitud. También están los Poner, Enviar, y Borrar operadores que puedes definir.

los web.Run sentencia inicia el servidor web en la dirección y el puerto dados. los web.go el paquete toma el relevo desde allí y llama a sus rutinas cuando se solicitan las direcciones definidas.

Compilando

Ahora que el programa está hecho, necesitas compilarlo. Para compilar un Ir Programa, le dices que construya el archivo con la función principal. Para compilar este programa, escribe:

ve a construir goTitleServer.go 

Cuando termine, tendrás que goTitleServer en el directorio. Ese es el programa completo. Puedes lanzarlo con:

./ goTitleServer 

A continuación, abra un navegador web para http://127.0.0.1:9910. Deberías ver esto:

goTitleServer en ejecución

Introduce tu cadena en el Texto para corregir: cuadro de texto, pulse Convertir, y la cadena convertida aparecerá en el Resultados: caja de texto.

Título Case Server Workflow

Naturalmente pongo este programa en una Alfredo flujo de trabajo Es una parte de la descarga junto con el goTitleServer.go expediente. Esto da un ejemplo del uso del servidor sin un navegador web. Utiliza el siguiente código bash para consultar el servidor:

query = 'echo "query" | sed -e 's / / + / g "; curl" http: // localhost: 9910 / titlecase /? text = $ query "; 

La primera línea cambia todos los espacios en el consulta cadena a +. los rizo command es un comando estándar de Unix para obtener información de un servidor web. La línea de comando usará el rizo ordena una solicitud de url como la página web crearía para enviarla. Lo que se devuelve en los resultados de convertir la cadena en el caso del título.

los Indicador de Alfred Los comandos para este flujo de trabajo son:

tis: lanzamiento-Este comando inicia el servidor. Tienes que iniciar el servidor antes de poder convertir.

tcs: convertir-Este comando toma una cadena para convertir. El flujo de trabajo muestra el resultado en una notificación y lo copia en el portapapeles..

tcs: matar-Este comando mata el servidor web.

También hay un tecla de acceso rápido que debe asignar para tomar la selección actual y ejecutarla a través del servidor de mayúsculas y títulos y pegarla nuevamente en su lugar.

Conclusión

Ahora que tiene el sistema configurado para escribir y compilar aplicaciones web usando Ir, Tienes que empezar a escribir algunos! Tome este código base y amplíelo a más funciones de procesamiento de texto para hacer un gran servidor de procesamiento de texto.