GO语言是Google于2009年推出的一门新的系统编程语言

特点:
  静态编译
  垃圾回收
  简洁的符号和语法
  平坦的类型系统
  基于CSP的并发模型
  高效简单的工具链
  丰富的标准库

为什么选择go语言
编译型语言,运行速度快
静态编译没有依赖
天生支持并发,充分利用多核
大厂支持,有后台

Hello World示例:

package main //像Java一样必须指定package。 main表示二进制程序

improt "fmt"   //引用fmt包

func main() {       // func 相当于Python的 def 定义函数
  fmt.Println("hello golang")          //fmt表示格式化 Println 打印并换行
}

HTTP版本Hello World

package main

import (
  "fmt"
  "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {    //request表示请求的页面,response表示返回的页面,把要返回的内容写在response里面。 *表示指针 w表示参数,后面是类型。r也是参数,返回的是request类型
  fmt.Fprintf(w, "Hello %s", r.URL.Path)    //把所要输出的东西写到这里。
}   //Fprintf 第一个F表示file的意思,打印到文件句柄里,print打印,f是format的意思,按格式去打印。全的意思是按一定格式往一个文件句柄里去打印。 什么格式呢,上面就定义了这个格式,URL.Path这个格式,意思就是我在URL打点什么东西,页面就会显示什么东西。

func main() {
  http.HandleFunc("/", handler)   // 访问/的时候,调用函数handler。 用来处理具体的事物的。
  http.ListenAndServe(":8080", nil)    // 设置监听端口, nil跟python的none一个意思,表示空值。
}

TCP版helloworld

package main

import (
  "fmt"
  "log"
  "net"
  "time"
)

func handle(conn net.Conn) {   //conn是个连接参数,net.Conn是conn的类型
  fmt.Fprintf(conn,"%s", time.Now().String())    //把时间传给conn连接,并打印它
  conn.Close()   //关闭这个连接
}

func main() {
  l, err := net.Listen("tcp", ":8080") //先拿net.Listen去监听TCP连接的8080端口
  if err != nil { //判断是不是有错误,有错误就返回log.Fatal
  log.Fatal(err)
  }
  for {    //for 没加东西在go里面就是无限循环的意思
    conn, err := l.Accept()    //l.Accept()接受过来的连接
    if err != nil {   //判断错误是否为空
      log.Fatal(err)    //如果有错误返回log.Fatal这个错误,Fatal在go里面的意思是打印几条错误日志,然后退出
    }
    go handle(conn) //没有错就把这个连接传到handle这个函数里面。不加这个go,就只调用一次这个函数,就结束了。 go 表示开一个协程,这个协程单独去运行这个函数,去运行上面的handle参数处理。
  }
}

并行和并发

并发(concurrent)不是并行(parallel)
一个例子,node.js具有并发的能力,但不能充分利用多核
写出一个能充分利用多核的程序需要很深的系统编程积淀
得益于优秀的设计,go可以轻松地写出跑满所有CPU的程序

go语言的应用

Docker,正火热的容器化几乎
kubernetes, Goole Borg的开源实现
Etcd, 类似zookeeper的高可用key-value存储

golang简介的更多相关文章

  1. Golang | 简介channel常见用法,完成goroutin通信

    今天是golang专题的第14篇文章,大家可以点击上方的专辑回顾之前的内容. 今天我们来看看golang当中另一个很重要的概念--信道.我们之前介绍goroutine的时候曾经提过一个问题,当我们启动 ...

  2. Golang之路【目录】

    我正在写一套使用Golang全栈开发的教程,名字暂叫“Golang之路”,希望大家多提建议. 目录如下: Golang之路[第一篇]:Golang简介和入门Golang之路[第二篇]:Golang基础 ...

  3. 第一篇:初始Golang

    Golang简介 编程语言已经非常多,偏性能敏感的编译型语言有 C.C++.Java.C#.Delphi和Objective-C 等,偏快速业务开发的动态解析型语言有PHP.Python.Perl.R ...

  4. Golang学习-第一篇 Golang的简单介绍及Windows环境下安装、部署

    序言 这是本人博客园第一篇文章,写的不到位之处,希望各位看客们谅解. 本人一直从事.NET的开发工作,最近在学习Golang,所以想着之前学习的过程中都没怎么好好的将学习过程记录下来.深感惋惜! 现在 ...

  5. golang基础之初识

    golang 简介 很久以前,有一个IT公司,这公司有个传统,允许员工拥有20%自由时间来开发实验性项目.在2007的某一天,公司的几个大牛,正在用c++开发一些比较繁琐但是核心的工作,主要包括庞大的 ...

  6. Windows10上基于Visual Studio Code安装Golang开发环境

    GoLang简介 Go编程语言是一个开源项目,它使程序员更具生产力. Go语言具有很强的表达能力,它简洁.清晰而高效.得益于其并发机制,用它编写的程序能够非常有效地利用多核与联网的计算机,其新颖的类型 ...

  7. (转)Go语言并发模型:使用 context

    转载自:https://segmentfault.com/a/1190000006744213 context golang 简介 在 Go http包的Server中,每一个请求在都有一个对应的 g ...

  8. 当红开发语言Go,真的是未来的技术主流吗?

    摘要:文将详细介绍 Golang 的语言特点以及它的优缺点和适用场景,带着上述几个疑问,为读者分析 Go 语言的各个方面,以帮助初入 IT 行业的程序员以及对 Go 感兴趣的开发者进一步了解这个热门语 ...

  9. golang学习笔记5 用bee工具创建项目 bee工具简介

    golang学习笔记5 用bee工具创建项目 bee工具简介 Bee 工具的使用 - beego: 简约 & 强大并存的 Go 应用框架https://beego.me/docs/instal ...

随机推荐

  1. 【JAVA】eclipse里代码整个前移或者后移的快捷键

    一整块后移是:选中按 tab 一整块前移是:选中按 shift+tab

  2. mysql考试复习

    基础创建 字段自动编号auto_increment ( 单词补充:increment 定期的加薪; 增量; 增加) 考点 添加自增 alter table [表名] modify [字段(id)] i ...

  3. vs code 同步

    vs code 同步需要在github上配置好gist id, 将gist id添加至setting.json中, 然后再在localsetting中设置access token,  gist id ...

  4. adb 链接网络 connect 安装apk install 断开IP链接 kill-server 连接数devices

    https://blog.csdn.net/zhonglunshun/article/details/78362439 ./adb connetc 192.168.1.11 ./adb install ...

  5. 一、Rabbit使用-安装教程

    首先我去官网上面下载RabbitMQ安装包:https://www.rabbitmq.com/which-erlang.html 现在下载的版本是3.7.17  因为我erlong安装的是20.3

  6. linux grep 设置高亮显示

    [root@eric ~]# vi /etc/profile alias grep='grep --color=auto' [root@eric ~]# source /etc/profile

  7. python常用函数 U

    update(dict) 字典合并,生成的为新的字典,新字典操作不会影响老字典. 例子:

  8. uboot URL 待填坑

    https://blog.csdn.net/funkunho/article/details/52465636 https://www.cnblogs.com/aaronLinux/p/5933309 ...

  9. hdu 2815 : Mod Tree 【扩展BSGS】

    题目链接 直接用模板好了.实在不行,反正有队友啊~~~~ #include<bits/stdc++.h> using namespace std; typedef long long LL ...

  10. Django ormmodel模型字段参考文章

    Model 字段参考 (Model field reference)¶ 本文档包含所有 字段选项 (field options) 的内部细节和 Django 已经提供的 field types . 参 ...