zoukankan      html  css  js  c++  java
  • Go语言

         首先说明学习路径,一个网站值得参考:Go语言中文网,https://studygolang.com/;文档,http://docscn.studygolang.com/doc/https://www.runoob.com/go/go-tutorial.html

                                                                                                                              

         

          Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言
    罗伯特·格瑞史莫(Robert Griesemer),罗勃·派克(Rob Pike)及肯·汤普逊(Ken Thompson)于2007年9月开始设计Go,稍后Ian Lance Taylor、Russ Cox加入项目。Go是基于Inferno操作系统所开发的。Go于2009年11月正式宣布推出,成为开放源代码项目,并在LinuxMac OS X平台上进行了实现,后来追加了Windows系统下的实现。在2016年,Go被软件评价公司TIOBE 选为“TIOBE 2016 年最佳语言”。 目前,Go每半年发布一个二级版本(即从a.x升级到a.y)。
         
          Go的语法接近C语言,但对于变量的声明有所不同。Go支持垃圾回收功能。Go的并行模型是以东尼·霍尔通信顺序进程(CSP)为基础,采取类似模型的其他语言包括OccamLimbo,但它也具有Pi运算的特征,比如通道传输。在1.8版本中开放插件(Plugin)的支持,这意味着现在能从Go中动态加载部分函数。
    与C++相比,Go并不包括如枚举异常处理继承泛型断言虚函数等功能,但增加了 切片(Slice) 型、并发、管道、垃圾回收、接口(Interface)等特性的语言级支持。Go 2.0版本将支持泛型,对于断言的存在,则持负面态度,同时也为自己不提供类型继承来辩护。
    不同于Java,Go内嵌了关联数组(也称为哈希表(Hashes)或字典(Dictionaries)),就像字符串类型一样。
        

    Go语言实现服务器和客户端比较简单
    服务器:
    listen
    accept
    recv

    客户端
    dial
    write

    1.server.go

    package main
    
    import (
    "log"
    "net"
    "os"
    )
    
    func recvMessage(client net.Conn) error {
    var message []byte
    message = make([]byte, 1024)
    
    for {
    len, _ := client.Read(message)
    if len > 0 {
    log.Println(message[0:len])
    }
    }
    
    return nil
    }
    
    func main() {
    server, err := net.Listen("tcp", "localhost:9700")
    if err != nil {
    log.Fatal("start server failed!
    ")
    os.Exit(1)
    }
    defer server.Close()
    
    log.Println("server is running...")
    for {
    client, err := server.Accept()
    if err != nil {
    log.Fatal("Accept error
    ")
    continue
    }
    
    log.Println("the client is connectted...")
    go recvMessage(client)
    }
    }
    View Code

    2.client.go

    package main
    
    import (
    "log"
    "net"
    "os"
    )
    
    func main() {
    client, err := net.Dial("tcp", "localhost:9700")
    if err != nil {
    log.Fatal("Client is dailing failed!")
    os.Exit(1)
    }
    
    client.Write([]byte("i am client"))
    
    client.Close()
    }
    View Code

    如何使用 Go 语言搭建企业级高并发服务器?
    提到「高并发」,就不得不提天生为高并发而生的 Go 语言:

    最详细的框架比较,通过尽可能多的角度(人气,社区支持,内置功能等)来比较最知名的几个Web 框架。

    Beego: 一个Go语言下开源的,高性能Web框架 
    https://github.com/astaxie/beego 
    https://beego.me

    Buffalo: 一个Go语言下快速Web开发框架 
    https://github.com/gobuffalo/buffalo 
    https://gobuffalo.io

    Echo: 一个高性能,极简的Web框架 
    https://github.com/labstack/echo 
    https://echo.labstack.com

    Gin: 一个Go语言写的HTTP Web框架。它提供了Martini风格的API并有更好的性能。 
    https://github.com/gin-gonic/gin 
    https://gin-gonic.github.io/gin

    Iris: 目前发展最快的Go Web框架。提供完整的MVC功能并且面向未来。 
    https://github.com/kataras/iris 
    https://iris-go.com

    Revel: 一个高生产率,全栈Go语言的Web框架。 
    https://github.com/revel/revel 
    https://revel.github.io

  • 相关阅读:
    面向对象六
    面向对象五
    面向对象四
    面向对象三
    面向对象二
    CentOS7下安装Redis4.0
    在亚马逊的EC2环境中创建swap
    centos7安装rabbitmq操作步骤
    在VUE下使用阿里图标
    Centos7-安装telnet服务
  • 原文地址:https://www.cnblogs.com/shiningleo007/p/13172092.html
Copyright © 2011-2022 走看看