当前位置:网站首页>03.golang初步使用
03.golang初步使用
2022-07-02 12:04:00 【thubier(段新建)】
从早在2016年起,内部有股移动优先云优先的风气,但基于当前的情况,我们无法快速的推进。这些年整个企业运行环境在云化部署,企业内部的基础平台基本成型:私有云,公有云,政务云等不断的升级/更新。
在大环境下,我们也完成了初步的内部改造,从单体应用(C#版)到微应用版本(Java版)。已经具备容器化/云化部署的基础条件。下一步将不断推进云环境改造。
当我们进入云化部署时,市场成熟的方案是:k8s+docker,这两个核心组件都以转向golang。作为开发人员,肯定不可能只停留在工具使用上,而将不断去探索工具背后的执行方式。golang成为我们必须面对的语言。
昨天使用了近5个小时,把golang运行环境/vscode go相关插件,以及对golang官网的文档进行了一轮完整的梳理,形成一个对golang语言的初步体验。
1.代码组织形式
golang语言采用了module---->package----->func 三个层级的管理,没有类的概念,但存在接口定义等信息。
2.语法
语法采用了较为面向自然语言的模式构建,大体方式还是按照c语言的解析框架进行。如一个函数:

上图来自官网:
func 为方法声明;ReverseRunes 方法名词;(s string):(s参数 string为数据类型) string 返回类型。
这个规则符合自然语言思维。
3.数据类型
数据类型与c#/java类似,定义了基本类型,可提供结构体/接口定义等信息。
4.变量
变量的赋值采用var 进行声明,也跨域采用推断式直接赋值实现。

5.控制语言
采用了面向自然语言模式构建,具体内容参见官网描述。

Effective Go - The Go Programming Language (google.cn)
6.外部包管理
采用了import 进行包导入,为了让外部包下载到本地,在设置好导入包后,执行go get . /go mod tidy 等操作。
由于golang的包管理采用了默认的配置,golang官网包管理,而在国内往往比较慢。为此,go开放了包管理代理配置变量,可以在全局变量中添加GOPROXY变量来指向特定的包管理服务。国内镜像地址有:https://proxy.golang.com.cn,direct
7.运行环境
由于golang语言是一个较新的语言,设计初衷是修正c/c++/java等语言的不人性化的内容。所以在优先考虑性能的同时,提供了大量的高度是自洽的标准扩展包,如http/net/sqldb等,普通使用者只需要简单使用高内聚的标准包,就可以快速实现web服务,数据访问等信息,让这些已是公认服务的组件成为基础,让使用者简单/快速构建业务实现......
可以理解为golang是一个接近c语言,但提供了大量基础应用实现的开发平台。代码实现模式介于面向过程与面向对象之间,最终达到性能与实现难度的平衡.........
8.生态
golang语言接近c语言,但提供了更多的标准扩展包,并采用了开源模式了运营。全开源模式吸引了大量的企业的进入,并且抓住了面向云实现,当前golang已成为事实的云基础平台实现语言:docker/k8s都已使用golang实现。并且在不断向web应用扩展。
边栏推荐
- Niuke Practice 101
- 07_哈希
- Guangzhou Emergency Management Bureau issued a high temperature and high humidity chemical safety reminder in July
- 18_Redis_Redis主从复制&&集群搭建
- 12_ Redis_ Bitmap_ command
- TiDB 集群最小部署的拓扑架构
- Markdown tutorial
- 做好抗“疫”之路的把关人——基于RK3568的红外热成像体温检测系统
- Kibana basic operation
- Oracle primary key auto increment
猜你喜欢

vChain: Enabling Verifiable Boolean Range Queries over Blockchain Databases(sigmod‘2019)

Data analysis thinking analysis methods and business knowledge - business indicators
![[noi Simulation Competition] scraping (dynamic planning)](/img/ee/27a07f80207a2925f5065e633eb39f.png)
[noi Simulation Competition] scraping (dynamic planning)

Practice of compiling principle course -- implementing an interpreter or compiler of elementary function operation language
![[noi simulation] Elis (greedy, simulation)](/img/a2/f8c8ab3bc8dd779327be3f76990976.png)
[noi simulation] Elis (greedy, simulation)

Oracle primary key auto increment

. Solution to the problem of Chinese garbled code when net core reads files

16_Redis_Redis持久化

10_Redis_geospatial_命令

Learn the method code example of converting timestamp to uppercase date using PHP
随机推荐
编译原理课程实践——实现一个初等函数运算语言的解释器或编译器
05_队列
CodeCraft-22 and Codeforces Round #795 (Div. 2)D,E
工程师评测 | RK3568开发板上手测试
【C语言】详解指针的初阶和进阶以及注意点(1)
二叉树的遍历方式主要有:先序遍历、中序遍历、后序遍历、层次遍历。先序、中序、后序其实指的是父节点被访问的次序。若在遍历过程中,父节点先于它的子节点被访问,就是先序遍历;
HUSTPC2022
Application of CDN in game field
I made an istio workshop. This is the first introduction
Case introduction and problem analysis of microservice
AtCoder Beginner Contest 254
Libcurl Lesson 13 static library introduces OpenSSL compilation dependency
How to conduct TPC-C test on tidb
N皇后问题的解决
Huffman tree: (1) input each character and its weight (2) construct Huffman tree (3) carry out Huffman coding (4) find hc[i], and get the Huffman coding of each character
List set & UML diagram
MySQL -- Index Optimization -- order by
07_哈希
CDN 在游戏领域的应用
2021-2022学年编译原理考试重点[华侨大学]