别致的语言GO(GO语言初涉)
最近由于各种原因(好吧,其实是犯懒)已经许久没有再写新的博文了!最近正好在学习一门新的语言,所以正好记录一下自己的学习成果!最近利用每天晚上下班回来后的几小时,学习了Google开发的Go语言,算是对其有了个基本的了解。确实是一门漂亮别致的语言。
首先go语言:是谷歌2009年11月10日推出的一种全新的编程语言,它可以在不损失应用程序性能的情况下降低代码的复杂性。它的主要特点有:简洁 快速 安全 并行 有趣 开源 支持泛型编程,内存管理,数组安全,编译迅速等!并且,它是一门静态,编译型的语言!是一种通用型的语言,可以用来开发任何软件——从普通应用到系统编程。虽然这种语言还不成熟,各种语言特征和规格还在变化,但程序员如今已经用它来开发工作了。
详细来说,它的设计目标有如下几点(来自wikipedia和golang FAQ):
安全:类型安全与内存安全。没有继承,无需处理类型的依赖关系,弱化类型的使用;变量默认初始化,简化设计负担。
并发和通信的支持。内建的并发机制使得多线程编程变得非常简单;内建的chan(channel)类型简化了线程间通讯。
完全的内存垃圾回收机制。
高速编译。没有头文件、Makefile等复杂的工程依赖关系,使得编译速度更快,工程更容易组织。
优势:
1.它是系统级别的语言,静态编译,是C系列语言。
2.具有很多内置库,使用起来和Python很类似。
3.语法足够简单,入门学习成本很低,适合PHP和Python切换过来的人。
4.速度快,就拿简单的页面来说,用PHP开发并发能够达到500很好了,但是用Go轻松就到上万,这是无法比拟的性能提升,而且用Go开发的效率和PHP差不多。
5.出自Google之手,而且有一帮牛人在维护,基于BSD开源,社区活跃。
6.它的语法简洁,一切为程序人员服务,降低程序开发成本!
缺点:
1.有些库不成熟,例如图像处理。
2.cgo在Window系统下面编译很麻烦,就拿SQLite的数据库驱动来说,在Window下面编译就会遇到很大的麻烦等。
以上是对go语言的一些简介,如题所述,我之所以说它是一门别致的语言,主要是它语法上的一些简化,对比传统语言如:C类型语言,来说显得非常简介独特!整个语言整体上感觉比较易学,当然学一门新语言其实是比较有难度的,但是难度并非来自于语言本身,而是对于整个计算机基础知识,已经编程相关知识的学习理解!
首页是它对于包的引入:
//可以直接引入
import "fmt"
import "flag" //也可以这样
import (
"fmt"
"time"
"flag"
) //同时能给引入的包起个别名
import(
f "fmt"
t "time"
) //还可以用.省略在程序中直接调用包内方法,无需带上包名
import(
. "fmt"
) //而且可以用_表示只引入包内的init()函数
import(
_ "github.com/go-sql-driver/mysql"
)
go中的if/for等流程控制语句是这样的:
if a > 10 {
...
}
for i, j := 0, 10; i < j; i++ {
...
}
它们在for,if等关键字到左大括号之间的语言,并不需要小括号(),并且在语法上强制要求左大括号必须跟前面的语句在同一行!(是不是有点奇怪)
当然还有变量的定义:
//可以这样定义变量
var a int
var b string
//也可以这样
var a, b, c int = 1, 2, 3 //还可以这样
var(
a int = 1
b string = ""
) //不仅如此,我还可以不声明类型,而是由值来推导变量的类型
var a = 2
//而且在函数内部,还可以这样定义变量
a := 1
c, d, e := 1, 2, 3
函数的定义:
//使用func关键字定义函数
func getName(name string) (prople string){
prople := name
return prople
} //函数还可返回两个值
func getData(num int) (data, err) {
data, err := num + 10
return data, err
}
从上面可以看出go语言的一些不同,和语法的简洁,在学习之中,慢慢的会让你爱上它,它是如此的与众不同,简洁,别致!
当然它的不同还不只是这些,还有比如type类型,interface接口,count常量的定义,数组,slice切片,map数组,goroutine协程,channel通道等等其他许多不同的特性,这些会在以后的博文了意义为大家介绍,这里就暂且不多说了!感谢大家的阅读!
本文由平凡公子原创发布,欢迎阅读及转载!
别致的语言GO(GO语言初涉)的更多相关文章
- 【C语言】C语言简介
目录: 1. [什么是C语言?] 2. [C语言历史] 3. [C语言标准] 4. [C语言特点] 1. 什么事C语言? · C语言是一门高级编程语言,用于人与计算机之间的沟通,就如同人与人之间沟通时 ...
- Hybrid App是如何实现网页语言与程序语言的混合?谁占主体?
[编者按]本文作者@徐珂铭,一位看好Html5的移动互联网的从业人士.喜爱玩技术,会点JAVA.HTML及CSS,有自己的想法及姑且能表达想法的文字,因此有了自己的文章. 基于HTML5的Web Ap ...
- 初识GO语言——安装Go语言
本文包括:1)安装Go语言.2)运行第一个Go语言.3)增加vim中对Go语言的高亮支持. 1.安装Go语言 本文采用源码安装Go语言,Go语言的源代码在百度网盘 http://pan.baidu.c ...
- 【C语言】01-C语言概述
说明:这个C语言专题,是学习iOS开发的前奏.也为了让有面向对象语言开发经验的程序员,能够快速上手C语言.如果你还没有编程经验,或者对C语言.iOS开发不感兴趣,请忽略 为什么iOS开发要先学C语 ...
- Java语言与C++语言的差异总结
Java的设计者曾说过,设计这门语言的灵感主要来自于C++. 世上先有C++,然后才有Java,整个Java语言的发展历史就是一部对C++的填坑史.所以在Java语言学习过程中,将其与C++语言对比是 ...
- 为什么和其他语言相比C语言是快速的语言
初入门的我们经常听见别人说"真正的程序员用C语言编程,C是最快的语言因为它是最靠近及其底层的语言."那么和其他语言相比C语言到底有什么特别的呢? C语言没有什么特别,这就是它快速的 ...
- Swift语言指南(七)--语言基础之布尔值和类型别名
原文:Swift语言指南(七)--语言基础之布尔值和类型别名 布尔值 Swift有一个基本布尔类型,叫做布尔(bool),布尔值又称逻辑值(logical),因为它只能为真(true)或假(false ...
- Swift语言指南(二)--语言基础之注释和分号
原文:Swift语言指南(二)--语言基础之注释和分号 注释 通过注释向自己的代码中注入不可执行的文本,作为你自己的笔记或提示.Swift编译器运行时会忽略注释. Swift的注释与C语言极其相似,单 ...
- Swift语言指南(三)--语言基础之整数和浮点数
原文:Swift语言指南(三)--语言基础之整数和浮点数 整数 整数指没有小数的整数,如42,-23.整数可以是有符号的(正数,零,负数),也可以是无符号的(正数,零). Swift提供了8,16,3 ...
- Swift语言指南(一)--语言基础之常量和变量
原文:Swift语言指南(一)--语言基础之常量和变量 Swift 是开发 iOS 及 OS X 应用的一门新编程语言,然而,它的开发体验与 C 或 Objective-C 有很多相似之处. Swif ...
随机推荐
- 微软BI 之SSIS 系列 - 理解Data Flow Task 中的同步与异步, 阻塞,半阻塞和全阻塞以及Buffer 缓存概念
开篇介绍 在 SSIS Dataflow 数据流中的组件可以分为 Synchronous 同步和 Asynchronous 异步这两种类型. 同步与异步 Synchronous and Asynchr ...
- Oracle 12c中文乱码,修改字符集的方法
在windows 7 64位上安装Oracle 12c没有设定字符集,采用的是操作系统默认字符集:WE8MSWIN1252,将字符集修改为:ZHS16GBK.由于过程不可逆,首先需要备份数据库. 1. ...
- JAVA 自定义注解在自动化测试中的使用
在UI自动化测试中,相信很多人都喜欢用所谓的PO模式,其中的P,也就是page的意思,于是乎,在脚本里,或者在其它的page里,会要new很多的page对象,这样很麻烦,前面我们也讲到了注解的使用,很 ...
- 全球最全路由DNS服务器IP地址
全球只有13台路由DNS根服务器,在13台路由服务器中,名字分别为“A”至“M”,其中10台设置在美国,另外各有一台设置于英国.瑞典和日本.下表是这些机器的管理单位.设置地点及最新的IP地址. 供应商 ...
- android 获得View的高度
在一个activity中有一个textview,设置字数不同,如何能在打开这个activity时就及时获得这个textview在activity的高度,有利于我对textview的高度进行设置. ...
- 《Redis入门指南(第2版)》读后感
今天刚刚将此书看完,现在还能记住一些内容,还有一些感慨感想,正好又想写点什么了就随便记录一下吧!也许灵感明天就消失了呢? 首先觉得作者非常的厉害,年纪轻轻的就写出了这么一本非常不错的书籍! 然后就是对 ...
- SNF快速开发平台MVC-审核流,审核完成后会给下一个审核人发邮件,下一个审核人可以不登录系统,在邮件里进行审核处理
审核流设计和使用参考以下资料: 审核流设计 http://www.cnblogs.com/spring_wang/p/4874531.html 审核流实例 http://www.cnblogs.com ...
- PHP 扩展开发之Zephir
最近对代码进行性能分析后,发现两个耗时的地方:自动加载文件数太多:参数验证函数调用超过1000次.这也是许多php语言框架面临的问题,所以发展出来诸如Yaf,Swoole,Phalcon这些C语言扩展 ...
- Socket网络编程--聊天程序(3)
上一小节,已经讲到可以每个人多说话,而且还没有限制,简单的来说,我们已经完成了聊天的功能了,那么接下来我们要实现什么功能呢?一个聊天程序至少应该支持一对多的通讯吧,接下来就实现多个客户端往服务器发送数 ...
- 一个正整数表示为n个连续正整数之和(第1届第2题)
题目要求 问题描述:一个正整数有可能可以被表示为 n(n>=2) 个连续正整数之和,如: 15=1+2+3+4+5 15=4+5+6 15=7+8 编写程序,根据输入的任何一个正整数,找出符合这 ...