golang简介
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简介的更多相关文章
- Golang | 简介channel常见用法,完成goroutin通信
今天是golang专题的第14篇文章,大家可以点击上方的专辑回顾之前的内容. 今天我们来看看golang当中另一个很重要的概念--信道.我们之前介绍goroutine的时候曾经提过一个问题,当我们启动 ...
- Golang之路【目录】
我正在写一套使用Golang全栈开发的教程,名字暂叫“Golang之路”,希望大家多提建议. 目录如下: Golang之路[第一篇]:Golang简介和入门Golang之路[第二篇]:Golang基础 ...
- 第一篇:初始Golang
Golang简介 编程语言已经非常多,偏性能敏感的编译型语言有 C.C++.Java.C#.Delphi和Objective-C 等,偏快速业务开发的动态解析型语言有PHP.Python.Perl.R ...
- Golang学习-第一篇 Golang的简单介绍及Windows环境下安装、部署
序言 这是本人博客园第一篇文章,写的不到位之处,希望各位看客们谅解. 本人一直从事.NET的开发工作,最近在学习Golang,所以想着之前学习的过程中都没怎么好好的将学习过程记录下来.深感惋惜! 现在 ...
- golang基础之初识
golang 简介 很久以前,有一个IT公司,这公司有个传统,允许员工拥有20%自由时间来开发实验性项目.在2007的某一天,公司的几个大牛,正在用c++开发一些比较繁琐但是核心的工作,主要包括庞大的 ...
- Windows10上基于Visual Studio Code安装Golang开发环境
GoLang简介 Go编程语言是一个开源项目,它使程序员更具生产力. Go语言具有很强的表达能力,它简洁.清晰而高效.得益于其并发机制,用它编写的程序能够非常有效地利用多核与联网的计算机,其新颖的类型 ...
- (转)Go语言并发模型:使用 context
转载自:https://segmentfault.com/a/1190000006744213 context golang 简介 在 Go http包的Server中,每一个请求在都有一个对应的 g ...
- 当红开发语言Go,真的是未来的技术主流吗?
摘要:文将详细介绍 Golang 的语言特点以及它的优缺点和适用场景,带着上述几个疑问,为读者分析 Go 语言的各个方面,以帮助初入 IT 行业的程序员以及对 Go 感兴趣的开发者进一步了解这个热门语 ...
- golang学习笔记5 用bee工具创建项目 bee工具简介
golang学习笔记5 用bee工具创建项目 bee工具简介 Bee 工具的使用 - beego: 简约 & 强大并存的 Go 应用框架https://beego.me/docs/instal ...
随机推荐
- JavaScript高级笔记
# 今日内容: 1. JavaScript: 1. ECMAScript: 2. BOM: 3. DOM: 1. 事件 ...
- log4j日志输出格式
%n- 换行 %m - 日志内容 %p - 日志级别(FATAL, ERROR, WARN, INFO, DEBUG or custom) %r - 程序启动到现在的毫秒数 %% - percent ...
- SQL SERVER将多行数据合并成一行
1)比如表中有三列数据: 2)执行如下查询: SELECT [USER_NAME], [USER_ACCOUNT] , [ROLE_NAME] = stuff(( SELECT ',' + [ROLE ...
- zabbix 4.2 安装教程
1.我这里使用的是ali的yum源 #wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7 ...
- find 查找目录下的文件
1. 命令功能 find命令用于查到目录下的文件,同时也可以调用其它命令执行相应操作. 2. 语法格式 find [-H] [-L] [-P] [-Olevel] [-D help|tree|sear ...
- python3-sorted
排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个dict呢?直接比较数学上的大小是没有意义的,因此,比 ...
- Web截屏插件
官方网站:http://www.ncmem.com 官方博客:http://www.cnblogs.com/xproer 产品首页:http://www.ncmem.com/webplug/scppr ...
- sublime text 3 Package Control无法下载插件
Package Control无法下载插件,发现是因为被墙了. ubuntu18.04 下使用privoxy设置全局参见:https://www.cnblogs.com/linjunfu/p/1101 ...
- php linux环境安装ftp扩展
1.进入PHP安装源码包,找到ext下的ftp,进入 cd /home/local/php-5.6.25/ext/ftp 2./usr/local/php/bin/phpize 3../configu ...
- 【2019 Multi-University Training Contest 6】
01: 02:https://www.cnblogs.com/myx12345/p/11650764.html 03: 04: 05:https://www.cnblogs.com/myx12345/ ...