数据结构和算法在计算机科学里,有非常重要的地位。此系列文章尝试使用 Golang 编程语言来实现各种数据结构和算法,并且适当进行算法分析。

我们会先简单学习一下Golang,然后进入计算机程序世界的第一个大门。

简单入门Golang

我们只学Golang语言的一个子集,足以开展接下来数据结构和算法的实现即可。

一、前言

Golang语言是谷歌Google公司在2007年启动,并在2009年正式发布并开源的高级编程语言。开源地址:https://github.com/golang/go,官网地址:https://golang.org

Golang语言语法简单,支持多平台交叉编译(Linux/Mac/Windows),支持内存自动GC(垃圾回收),支持嵌C/C++开发,并且实现了语法层面的线程调度,开发多线程程序十分方便。语法很像C/Python/JavaScript等高级编程语言。

设计这门语言的设计者有以下几位:

  1. Ken Thompson:在贝尔实验室与Dennis M. Ritche发明了C语言和Unix操作系统,与Rob Pike发明了UTF-8编码,图灵奖得主。
  2. Rob Pike:也参与开发了Unix操作系统,UTF-8编码发明者之一。
  3. Robert Griesemer:参与过V8 JavaScript引擎和Java HotSpot虚拟机的研发。

前两位比较知名,现在都已经退休了,其他人有兴趣可以谷歌一下。

二、安装并简单使用

安装Golang:https://golang.org/dl:Windows 操作系统点击msi按提示安装,Mac 操作系统可以使用brew install golang安装。

打开命令行终端输入:

go version

显示以下结果即为成功:

go version go1.13 darwin/amd64

在任一文件夹下新建一个文件main.goGolang语言编写的程序文件后缀必须都为.go):

package main

import (
"fmt"
"time"
) func init() {
fmt.Println("init will be before hello world")
} func main() {
fmt.Println("hello world")
fmt.Println("today times:" + time.Now().String())
}

打开命令行终端进行编译:

go build main.go

编译后会在本地文件夹下生成一个二进制文件:main或者main.exe(Windows系统)。

执行二进制:

./main

将会打印出以下结果:

init will be before hello world
hello world
today times:2019-12-09 13:14:14.383118 +0800 CST m=+0.000199077

三、如何学习一门语言

每学一门编程语言,都离不开学习它的语言特征:

  1. 支持哪些基本数据类型,如整数,浮点数,布尔值,字符串,支持哪些高级数据类型,如数组,结构体等。
  2. if判断和while循环语句是怎样的,是否有switch或者goto等语句。
  3. 语言函数的定义是怎样的,如何传递函数参数,有没有面向对象的语言特征等。
  4. package包管理是怎样的,如何管理一个工程,官方提供哪些标准库,如时间处理,字符串处理,HTTP 库,加密库等。
  5. 有没有特殊的语言特征,其他语言没有的,比如某些语法糖。

系列文章入口

我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook

最新文章

  1. MemSQL Start[c]UP 2.0 - Round 1(无聊练手B题)
  2. MySQL基础之第17章 MySQL日志
  3. 数据库连接池c3p0和dbcp
  4. GitHub Desktop安装异常解决
  5. .Net之托管堆资源分配
  6. [BZOJ2339][HNOI2011]卡农
  7. MS MDS系列之MDS层次结构(Hierarchy)
  8. Android使用百度地图定位并显示手机位置后使用前置摄像头“偷拍”
  9. 深入浅出多线程——ReentrantLock (一)
  10. CI框架使用PHPmailer发送邮件找回密码
  11. MongoDB之建立Windows和本地虚拟机的双向连接
  12. IntelliJ IDEA Tomcat启动VM Options配置
  13. liunx必知必会(1)
  14. 潭州课堂25班:Ph201805201 WEB 之 页面编写 第三课 (课堂笔记)
  15. JS控制音频顺序播放
  16. 安装hadoop1.2.1(参考hadoop实战第二版)
  17. PHP开发框架比较
  18. oracle 年龄计算 岁 月 天
  19. .NET创建WebService服务简单的例子
  20. Nginx" upstream prematurely closed connection while reading response header from upstream"问题排查

热门文章

  1. CSS每日学习笔记(0)
  2. js遍历删除对象的key
  3. Peek和Pop功能开发(3D Touch开发之一)
  4. Mol Cell Proteomics. | MARMoSET – Extracting Publication-ready Mass Spectrometry Metadata from RAW Files
  5. c# 使用Newtonsoft.Json解析JSON数组
  6. JSP+Servlet+C3P0+Mysql实现的网上蛋糕店
  7. masql数据库的表查询
  8. type=file 文件修改表单 名称不能正常回显的问题
  9. sql-lib闯关41-50
  10. git的cd命令