学习golang开始前的准备工作

开发小程序的之朴 · · 331 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

学习任何一门语言,都需要了解和学习好基础,至于基于该语言的各种框架,对于我们来说,都是工具。打牢基础,并不是指只熟记语言的关键词和语法,更重要的是我们需要知道它是什么,为什么要这么用,它包括程序思维逻辑和实现方法。

什么是golang

Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。

Go的语法接近C语言,但对于变量的声明(英语:type declaration)有所不同。Go支持垃圾回收功能。通过goroutine和通道等并行构造可以建造线程池和管道等。

与C++相比,Go并不包括如枚举、异常处理、继承、泛型、断言、虚函数等功能,但增加了 切片(Slice) 型、并发、管道、垃圾回收功能、接口等特性的语言级支持。

不同于Java,Go原生提供了关联数组(也称为哈希表(Hashes)或字典(Dictionaries))。

为什么是golang

网上一个陈述说 Go 语言是“C 语言的理念加 Python 的姿态”,个人非常认同这个观点。从我的角度看,就是 Go 语言找到了一个开发效率和执行效率的最佳平衡点。这点非常类似于 Java,就是将效率和开发很好的结合在一起了。

在我熟悉(了解)的语言中,C、C++ 是执行效率最高的语言了,而 Python、PHP、JavaScript 执行效率就相对低些。但是从开发实现业务逻辑的角度,PHP、Python、JavaScript 确实很快的,他们内置了大量的常见数据结构,函数方法。

C(C++) 语言的特征是要尽量保持语言的小巧,不屏蔽底层且底层友好,关注语言的执行效率和性能。而 Python(PHP,JavaScript) 的特征是用尽量少的代码完成尽量多的事,尽量不要关注底层 OS,程序员的精力尽量在业务逻辑实现上。golang的就是尽量平衡。

总的来说就是,对比执行效率优先的语言,golang开发效率更高;对比开发效率优先的语言,golang执行效率更高,它在执行效率和开发效率上做到了平衡。

如何学习golang

golang的语法简单,开发效率高,并不代表就可以不用学习和记忆基础了。学习基础知识是学好任何一门语言的前提。当然,我是反对为了学习而学习的学习方法的。我的学习理念是,带着需求来学习。这样子不至于刚学过的东西,很快就又抛到脑后了。我们从真正的做项目的需求开始,在一步步的需求中,建立起学习的相关知识点的联系,最终达到成功学习golang的目的。一是学习golang设计理念,二是学习golang的特性,三是学习软件设计,四是深入学习golang与软件开发的结合应用。因此就有了这个教程。

golang有什么用处

golang有着接近c语言的执行速度,同时也有着接近php语言的开发效率。golang使用起来简单、代码描述效率高、编码规范统一、上手快。这样golang就有着广泛的开发前景。

鉴于golang的特点和设计的初衷,golang作为服务器编程语言,很适合处理日志、数据打包、虚拟机处理、文件系统、分布式系统、数据库代理等;网络编程方面,golang广泛应用于Web 应用、API应用、下载应用等;除此之外,golang还适用于内存数据库和云平台领域,目前国外很多云平台都是采用开发。

我们这次就从学习使用golang开发网站来深入学习golang开发。

实战

从上面的准备知识开始,我们对golang已经有了初步的了解,知道了golang是什么,为什么选择golang、如何学习golnag、golang有什么用等知识。完事具备之后,我们就剩一个开始了。

真正的开始,就是实战,就是要一开始学习就切入主题,直接拿golang来开发网站。我们在开始前,我们需要先根据实际开发的网址来整理出一个需求,再根据需求来从零开始实战学习golang。此处,我们就以我们需要开发一个博客网站为例,展开本教程的学习之路。


有疑问加站长微信联系(非本文作者)

本文来自:Segmentfault

感谢作者:开发小程序的之朴

查看原文:学习golang开始前的准备工作

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

331 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传