Go Web编程
数组可以使用另一种:=来声明 a := [3]int{1, 2, 3} // 声明了一个长度为3的int数组 b := [10]int{1, 2, 3} // 声明了一个长度为10的int数组,其中前三个元素初始化为1、2、3,其它默认为0 c := [...]int{4, 5, 6} // 可以省略长度而采用`...`的方式,Go会自动根据元素个数来计算长度 也许你会说,我想数组里面的值还 args)与new(T)有着不同的功能,make只能创建slice、map和channel,并且返回一个有初 始值(非零)的T类型,而不是*T。本质来讲,导致这三个类型有所不同的原因是指向数据结构的引用在使用前必须被 初始化。例如,一个slice,是一个包含指向数据(内部array)的指针、长度和容量的三项描述符;在这些项目被 初始化之前,slice为nil。对于slice、map和channel来说,ma make返回初始化后的(非零)值。 下面这个图详细的解释了new和make之间的区别。 50 51 图2.5 make和new对应底层的内存分配 关于“零值”,所指并非是空值,而是一种“变量未填充前”的默认值,通常为0。 此处罗列 部分类型 的 “零 值” int 0 int8 0 int32 0 int64 0 uint 0x0 rune 0 //rune的实际类型是0 码力 | 295 页 | 5.91 MB | 1 年前3Go 入门指南(The way to Go)
目 录 致谢 阅前必读 内容介绍 前言 第1章:Go 语言的起源,发展与普及 1.1 起源与发展 1.2 语言的主要特性与发展的环境和影响因素 第2章:安装与运行环境 2.1 平台与架构 2.2 Go 环境变量 2.3 在 Linux 上安装 Go 2.4 在 Mac OS X 上安装 Go 2.5 在 Windows 上安装 Go 2.6 安装目录清单 2.7 分享,让知识传承更久远! 感谢知识的创造者,感谢知识的分享者,也感谢每一位阅读到此处的读者,因为我们 都将成为知识的传承者。 致谢 - 7 - 本文档使用 书栈(BookStack.CN) 构建 阅前必读 在接触 Go 语言之后,对这门编程语言非常着迷,期间也陆陆续续开始一些帮助国内编程爱好者了解和发展 Go 语言 的工作,比如开始录制视频教程《Go编程基础》。但由于目前国内并没有比较好的 Go 参与翻译人员: @zhanming themorecolor @everyx @chidouhu @spawnris 《Go入门指南》 翻译进度 支持本书 交流社区 新人守则 致谢 阅前必读 - 8 - 本文档使用 书栈(BookStack.CN) 构建 @domainname @leisore @dake @glight2000 @songleo 除特别声明外,本书中的内容使用0 码力 | 466 页 | 4.44 MB | 1 年前3Go 入门指南(The way to Go)
名非谷歌员工的贡献者对 Go 语言核心部分提交了超过 1000 个 修改建议。在过去的 18 个月里,又有 150 开发者贡献了新的核心代码。这俨然形成了世界上最大的开源 团队,并使该项目跻身 Ohloh 前 2% 的行列。大约在 2011 年 4 月 10 日,谷歌开始抽调员工进入全职 开发 Go 语言项目。开源化的语言显然能够让更多的开发者参与其中并加速它的发展速度。Andrew Gerrand 在 2010 年 5 月:谷歌投入使用 2011 年 5 月 5 日:Google App Engine 支持 Go 语言 从 2010 年 5 月起,谷歌开始将 Go 语言投入到后端基础设施的实际开发中,例如开发用于管理后端复杂 环境的项目。有句话叫 “吃你自己的狗食”,这也体现了谷歌确实想要投资这门语言,并认为它是有生产 价值的。 Go 语言的官方网站是 golang.org,这个站点采用 Python bash 中找到。 大部分的目录都包含了名为 doc.go 的文件,这个文件提供了更多详细的信息。 2. gccgo 编译器: 一款相对于 gc 而言更加传统的编译器,使用 GCC 作为后端。GCC 是一款非常流行的 GNU 编译器, 它能够构建基于众多处理器架构的应用程序。编译速度相对 gc 较慢,但产生的本地代码运行要稍微快 一点。它同时也提供一些与 C 语言之间的互操作性。0 码力 | 380 页 | 2.97 MB | 1 年前3如何用GO支撑海外电商的快速发展-吕梦楼
新增GO商城服务,迁移下单流程中的订单结算、收银台等功能 PC和M站相关功能,请求下发到GO商城服务,页面仍通过PHP服务端渲染 架构演变 06. 前后端分离 核心流程全部迁移到GO商城服务,包括购物车、订单、商品和地址等 页面渲染逻辑全部由前端处理,实现前后端分离 架构演变 07. 微服务化 目前已有部分电商服务接入网关,后续会持续推动电商服务的微服务接入 通过微服务网关,便于电商服务的接入、监控和管理0 码力 | 33 页 | 3.80 MB | 1 年前32.3 用golang写一个操作系统
l 盖娅 l ⽂文明 l 互联⺴⽹网 结缘Golang:上帝的⼿手法 l ⼤大道⾄至简 l ⽆无⽤用的都会被舍弃 l 互动和映照 l 迭代中前⾏行 结缘Golang:上帝的⼿手法 监控在线系统所有请求的性能,并通过⺴⽹网⻚页进⾏行提供查询功能 简介 功能 模拟ssh登录各server, 采集所有请求的数据 根据服务器、⽇ chrome os和阿⾥里云os。在上⼀一层操作系统基础之上和⾃自家的云系统进⾏行整合 l 去中⼼心化的云操作系统 Leither 架构基本和chrome os类似,只是将后端的云系统去中⼼心化,使之脱离巨头的控制 操作系统历史 l 互联⺴⽹网正在整合各个⾏行业,对各个传统⾏行业进⾏行重构 l 互联⺴⽹网的格局正在固化 ⾏行业 所有这些应⽤用,⽤用户体验基本不变的情况下 不需要中⼼心服务器存在 Leither是什么? 数 据 层 底 层 ⺴⽹网 络 层 应 ⽤用 层 数 据 库 系 统 接 ⼝口 邮 件 模 块 前 端 架 构 WEB Server RPC 邮件⼿手机接⼝口 ⽤用户信息 ⾃自 ⼰己 好 友 节 点 信⽤用结算 路由 消息通讯 ⽤用户数据 公共数据 授 权 担0 码力 | 33 页 | 1014.12 KB | 1 年前32.2.2 深入理解BFE
运维成本高 • 流量统一控制能力低 • 引入BFE后 • 功能统一开发 • 运维统一管理 • 流量控制能力增强 • BFE平台的主要功能 • 接入和转发,流量调度,安全防攻击,数据分析 BFE部署前 BFE部署后 L4LB 业务A 集群 业务B 集群 业务C 集群 BFE 业务A 集群 业务B 集群 业务C 集群 L4LB BFE平台架构 负载均衡器 vs 名字服务 基于负载均衡器 持比较复杂的策略, 且涉及升级的问题。 总体流量规模较大; 应用场景对流量控 制要求低;无法使 用负载均衡器的场 景。 负载均衡器 • 负载均衡的趋势 • 硬件 => 软件 • 四层和七层负载均衡器分离 • 四层负载均衡 • LVS,DPVS,… • 七层负载均衡 • HAProxy,Nginx,Envoy,Traefik, BFE,… BFE为什么基于Go语言 • 研发效率 • 远高于C语言0 码力 | 26 页 | 1.78 MB | 1 年前3Golang大规模云原生应用管理实践
就职于阿里云-云原生应用平台团队 • Problem Solver,聚焦中间件,容器,Kubernetes,PaaS平台… • OAM社区成员 开局一张图 规模化应用交付效率对比去年 每万笔峰值交易的IT成本对比4年前 提升1倍 下降80% 云原生 技术 稳定 成本 效率 云原生-程序员视角 基础设施 K8s 云原生生态(CNCF) 云原生应用 云原生是以容器技术为基础围绕着Kubernete 从杭州到上海是策略,坐火车是机制; • 接口是策略,实现是机制; • 声明是策略,过程是机制; • 策略面向外部交互,机制面向内部实现; • 策略追求开放标准,机制追求稳定可复用; • 策略与机制要分离; • 策略与机制随着层次的变化而变化; 应用管理的策略与机制 应用 版本 工作负载 负载均衡 标签 流量 组件 日志 指标 容量 服务 依赖 路由规则 持久卷 部署策略0 码力 | 23 页 | 7.70 MB | 1 年前3Golang 101(Go语言101 中文版) v1.21.a
行 go install example.com/program@latest来安装一个第三方Go程序的最新版本(至GOBIN目 录 ) 。 在 Go 官 方 工 具 链 1.16 版 本 之 前 , 对 应 的 命 令 是 go get -u example.com/program(现在已经被废弃而不再推荐被使用了)。 我们可以运行go help aSubCommand来查看一个子命令aSubCommand的帮助信息。 当然其它很多形式也是合法的,比 如0.、.0、0e0和0x0p0等。 虚部字面量形式 一个虚部值的字面量形式由一个浮点数字面量或者一个整数字面量和其后跟随 的一个小写的字母i组成。 在Go 1.13之前,如果虚部中i前的部分为一个整数字 面量,则其必须为并且总是被视为十进制形式。 一些例子: 1.23i 1.i .23i 123i 0123i // == 123i(兼容性使然。见下) 1.23E2i // 0o11i // == 9i 0x11i // == 17i 0b11i // == 3i 0X.8p-0i // == 0.5i 注意:在Go 1.13之前,虚部字面量中字母i前的部分只能为浮点数字面量。 为 了兼容老的Go版本,从Go 1.13开始,一些虚部字面量中表现为(不以0o和0O开 头的)八进制形式的整数字面量仍被视为浮点数字面量。 比如上例中的011i、 0123i和00011i。0 码力 | 608 页 | 1.08 MB | 1 年前3Golang 101(Go语言101 中文版) v1.21.a
当然其它很多形式也是合法的,比 如0.、.0、0e0和0x0p0等。 虚部字面量形式 一个虚部值的字面量形式由一个浮点数字面量或者一个整数字面量和其后跟随 的一个小写的字母i组成。 在Go 1.13之前,如果虚部中i前的部分为一个整数 字面量,则其必须为并且总是被视为十进制形式。 一些例子: 1.23i 1.i .23i 123i 0123i // == 123i(兼容性使然。见下) 1.23E2i // 0o11i // == 9i 0x11i // == 17i 0b11i // == 3i 0X.8p-0i // == 0.5i 注意:在Go 1.13之前,虚部字面量中字母i前的部分只能为浮点数字面量。 为 了兼容老的Go版本,从Go 1.13开始,一些虚部字面量中表现为(不以0o和0O 开头的)八进制形式的整数字面量仍被视为浮点数字面量。 比如上例中的 011i、0123i和00011i。 e表达 式在同一个switch-case流程控制中出现 ? , 而gccgo(v8.2)允许重复的布 尔和字符串类型的case表达式在同一个switch-case流程控制中出现。 上面的例子中的前两个case分支中的注释已经解释了,和很多其它语言不一 样,每个分支代码块的结尾不需要一条break语句就可以自动跳出当前的 switch-case流程控制。 那么如何让执行从一个case分支代码块的结尾跳入下0 码力 | 821 页 | 956.82 KB | 1 年前3Golang 101(Go语言101 中文版) v1.21.a
当然其它很多形式也是合法的,比如 0.、.0、0e0和0x0p0等。 虚部字面量形式 一个虚部值的字面量形式由一个浮点数字面量或者一个整数字面量和其后跟随的一 个小写的字母i组成。 在Go 1.13之前,如果虚部中i前的部分为一个整数字面量, 则其必须为并且总是被视为十进制形式。 一些例子: 1.23i 1.i .23i 123i 0123i // == 123i(兼容性使然。见下) 1.23E2i // == 17i 0b11i // == 3i 0X.8p-0i // == 0.5i 第6章:基本类型和它们的字面量表示 28 注意:在Go 1.13之前,虚部字面量中字母i前的部分只能为浮点数字面量。 为了 兼容老的Go版本,从Go 1.13开始,一些虚部字面量中表现为(不以0o和0O开头 的)八进制形式的整数字面量仍被视为浮点数字面量。 比如上例中的011i、 0123i和00011i。 值。(这里,符号>>为右移位运算符。) 1| const MaxInt = int(^uint(0) >> 1) 使用类似的方法,我们可以声明一个常量来表示当前操作系统的位数,或者检查当 前操作系统是32位的还是64位的。 1| const NativeWordBits = 32 << (^uint(0) >> 63) // 64 or 32 2| const Is64bitOS =0 码力 | 591 页 | 21.40 MB | 1 年前3
共 43 条
- 1
- 2
- 3
- 4
- 5