技术圈开发者交流群:

初识Go语言

Go语言是Google推出的一个全新的编程语言,在2009年11月正式对外发布。经过快速迭代,2012年3月28日,Go发布第⼀个正式的稳定版本。

出身名门的go语言,吸收了其他语言的特点,是一种并发的、带垃圾回收的、快速编译的语言。

  • 自动垃圾回收
  • 函数多返回值,多值返回仅动态语言Python有此特性
  • 并发编程,引入goroutine的概念,是一种比线程更加轻盈、更省资源的协程
  • 异常处理,不支持try-catch语句,利用defer panic recover错误处理机制
  • 反射,和java php里的反射(Reflection)类似
  • Go可以和C程序交互
  • 跨平台,Go支持交叉编译

编程语言五花八门,在C/C++ Java Python PHP JavaSrcipt 等主流语言强势领头的环境下,Go语言也有着其独特的优势,抓住开发者的痛点,以最直接、简单、高效、稳定的方式来解决问题。

GoLang 07月01日 2055

字节序在Go语言里的使用

字节序,即字节在电脑中存放时的序列与输入(输出)时的序列是先到的在前还是后到的在前。

字节序分为:大端字节序小端字节序

GoLang 04月05日 1042

Go 语言 Socket 的客户端和服务端的简单实现

在网络世界里,进程间的通信离不开socket,主要分为TCP SocketUDP Socket

下面以TCP 为例,分别写一下服务端客户端

这里要做的客户端服务端,在连接建立后,都可以接收和发送消息。

GoLang 03月21日 1087

Golang里的AES加密、解密,支持AES-ECB-PKCS7Padding等多种加密组合,兼容JAVA、PHP等语言

密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,这个标准用来替代原先的DES。AES加密数据块分组长度必须为128bit,密钥长度可以是128bit、192bit、256bit中的任意一个。

这里推荐一个 golang 的加解密库:https://github.com/forgoer/openssl

支持的加密模式有:

  • AES-ECB/AES-CBC
  • DES-ECB/DES-CBC
  • 3DES-ECB/3DES-CBC
  • ...
GoLang 03月24日 246912

ThinkGo:一个轻量级的 Go 语言 MVC 框架

ThinkGo 是一个轻量级的 Go 语言 MVC 框架,目前支持路由、中间件、控制器、请求、响应、Session、视图、日志、缓存、ORM等 web 框架应该具备的基本功能,ThinkGo致力于让代码简洁且富于表达力,帮助开发者快速构建一个 Web 应用。

  • 简洁的路由,支持参数注入
  • 强大的路由中间件,支持前置/后置中间件
  • Session支持,支持cookie、redis及自定义存储
  • 强大的日志服务,支持多通道存储,遵循RFC 5424规范。
  • 缓存,支持memory、redis及自定义缓存驱动
  • 简洁的ORM,能使用原生 SQL、流畅的查询构造器
go get github.com/thinkoner/thinkgo
package main

import (
    "github.com/thinkoner/thinkgo"
    "fmt"
    "github.com/thinkoner/thinkgo/router"
    "github.com/thinkoner/thinkgo/context"
)

func main() {
    app := thinkgo.BootStrap()
    app.RegisterRoute(func(route *router.Route) {

        route.Get("/", func(req *context.Request) *context.Response {
            return thinkgo.Text("Hello ThinkGo !")
        })

        route.Get("/ping", func(req *context.Request) *context.Response {
            return thinkgo.Json(map[string]string{
                "message": "pong",
            })
        })

        // Dependency injection
        route.Get("/user/{name}", func(req *context.Request, name string) *context.Response {
            return thinkgo.Text(fmt.Sprintf("Hello %s !", name))
        })
    })
    // listen and serve on 0.0.0.0:9011
    app.Run()
}
GoLang 2019年02月12日 20199
鄂ICP备19028750号 @copyright 2019 tech1024.com