for(int a = 0; a<10 ; a++){
// c语言的循环
}
for a := 0 ; a<10 ; a++ {
    // go语言的循环
}
// for二边的括号被去掉,int声明被简化为:=,直接通过编译器右值推导获得a的变量类型并声明
// 同样if语句也是 go语言无需添加表达式的括号
if(表达式){
}
if 表达式 {
}
// go语言中,左括号必须紧接着语句不换行,其他样式的括号被视为代码编译错误,这个特性刚开始会使开发者有一些不习惯,但随着对go语言的不断熟悉,开发者就会发现风格统一让大家在阅读代码时把注意力集中到了解决问题上 而不是代码风格上
// c语言的前置++和后置++
int a, b
a = i++; //执行程序第一次是本身的数 执行第二次加1
b = ++i; //执行程序第一次就开始加1
// 在go语言中,自增操作符不再是一个操作符,而是一个语句。因此,在go语言中自增只有一种写法
i++
// 如果写成前置自增++i ,或者赋值后自增 a=i++ 都将导致编译错误 
/*
目前golang具有二种编译器
一种是建立在GCC基础上的Gccgo
另外一种是分别针对64位和32位计算机的一套编译器(6g和8g)
依赖方面由于go语言大多数第三方开源库都在github上 在代码的import中加上对应的github路径就可以使用了
库会默认下载到工程的pkg目录下 另外,编译时会默认检查代码中所有实体的使用情况 凡是没有使用到的package或变量,都会编译不通过
*/
/*
异常处理
go语言不支持try catch结构化的异常解决方式,因为觉得会增加代码量,而且会被滥用,不管多小的异常都会抛出
3个重要关键字defer,panic,recover
defer是函数结束后执行,呈先进后出
panic是程序出现无法修复的错误时使用,但会让defer执行完;
recover会修复错误,不至于程序终止,当不确定函数不会出粗时使用defer+recover
go语言如果是普通异常查看被调用方返回error对象
如果是严重异常指的是中断性panic(比如除0)使用defer,recover,panic机制来捕获处理
严重异常一般由go语言内部自动抛出 不需要用户主动抛出,避免传统try catch写得到处都是的情况
*/
/*
网络编程
socket用net.Dial(基于tcp/udp,封装了传统的connect,listen,accept等接口)
http用http.Get/Post()
rec用client.Call('class_name.method_name',args,&reply)
因此它天生具备了去中心化,分布式等特性,具体表现之一就是提供了丰富便捷的网路编程接口
在go语言中还有一个重要的能力就是自带高性能HttpServer 通过简单的几行代码就可以得到一个基于协程的高性能web服务
更重要的是,维护成本极低,没有任何依赖
*/
/*
函数多返回值
允许函数返回多个值,在某些场景下,可以有效的简化编程
go语言推荐的编程风格,是函数返回的最后一个参数为error类型(只要逻辑体中可能出现异常),这样,在语言级别支持多返回值,就很有必要了
语言交互性
语言交互性指的是本语言是否能和其他语言交互,比如可以调用其他语言编译的库
go可以和c程序交互
*/
/*
其他一些有趣的特性
类型推导 : 在定义变量的时候是支持var abc = 10这样的语法 让go语言看上去有点像动态类型语言 但go语言实际上是强类型语言
接口interface:一个类型只要实现了某个interface的所有方法,既可实现该interface,无需显示去继承,go编程规范推荐每个interface只提供一到二个的方法,这样使得每个接口的目的非常清晰
defer机制 :在go语言中提供关键字defer可以通过该关键字指定需要延迟执行的逻辑体,也就是说,在函数体return前或出现panic时执行,这种机制非常适合善后逻辑处理,比如可以尽早避免可能出现的资源泄露问题,可以说defer是继goroutine和channel之后,另一个非常重要,实用的语言特性,对defer的引入,在很大程度上可以简化编程
“包”的概念:和python一样,把相同功能的代码放到一个目录,称之为“包”,包可以被其他包引用,main包是用来生成可执行文件,每个程序只有一个main包,包的主要用途是提高代码的可复用性,通过import可以引入其他包
交叉编译:比如说你可以再运行Linux系统的计算机上 开发运行Windows下运行的应用程序,这是第一门完全支持utf-8的编程语言,它不仅可以处理utf-8编码的字符串,就连它的源码格式都是使用的utf-8编码
 
*/
package main //标记当前文件为main包,main包也是go程序的入口包
//导入 net/http包,这个包的作用是HTTP的基础封装和访问
import(
"net/http"
)
// 程序执行的入口函数 main()
func main(){
// 使用http.FileServer 文件服务器将当前目录作为根目录(/目录)的处理器,访问根目录,就会进入当前目录
http.Handle("/", http.FileServer(http.Dir(".")))
// 默认的HTTp服务侦听在本机的8080端口
http.ListenAndServer(":8080",nil)
}
// 把这个源码保存为main.go,安装go语言的开发包(后续我们会讲解如何安装),在命令行输入一下命令 go run main.go
// go语言的源码无需头文件,编译的文件都来自于后缀名为.go的源码文件

初学go语言的更多相关文章

  1. 初学Objective-C语言需要了解的星星点点

             其实大多数开发初学者都有一些相同的特点,可以说是一种“职业病”.Most有其他平台开发基础的初学者,看到Xcode就想摩拳擦掌:看到Interface Builder就想跃跃欲试:而 ...

  2. 初学c语言

    虽然有一点点基础,但是还是从头学吧,这一周也就一些c语言的几个代码代表的意思和一个Hello world的程序. #include是头文件名,<>这是要返回的函数类型,然后是main主函数 ...

  3. 适合初学C语言是练习的代码

    作为一个小白,自己学C的时候就想找些代码练练手,就整理了一些. 1.最大公约数和最小公倍数 # include <stdio.h> int main(void) {     int i, ...

  4. GO语言之channel

    前言: 初识go语言不到半年,我是一次偶然的机会认识了golang这门语言,看到他简洁的语法风格和强大的语言特性,瞬间有了学习他的兴趣.我是很看好go这样的语言的,一方面因为他有谷歌主推,另一方面他确 ...

  5. 转:C语言中的头文件可以自己写吗?

    转自:http://www.eefocus.com/computer00/blog/08-09/155791_9ebdc.html 一些初学C语言的人,不知道头文件(*.h文件)原来还可以自己写的. ...

  6. 《C专家编程》第二章——这不是Bug,而是语言特性

    无论一门语言有多么流行或多么优秀,它总是存在一些问题,C语言也不例外.本章讨论的重点是C语言本身存在的问题,作者煞费苦心的用一个太空任务和软件的故事开头,也用另一个太空任务和软件的故事结尾,引人入胜. ...

  7. python语言switch-case

    初学python语言,竟然很久才发现python没有switch-case语句,查看官方文档说是可以用if-elseif-elseif....代替. 讲真,这都不是问题.不就是一个条件判断吗.用if- ...

  8. C语言杂谈(一)scanf()、scanf_s()与错误 C4996

    错误 C4996 初学C语言时,第一个接触到的I/O函数便是scanf()了.但在高版本的 Visual Studio (包括但不限于2015.2013.2012)编译代码时,却会出现意想不到的错误. ...

  9. R语言书籍的学习路线图

    现在对R感兴趣的人越来越多,很多人都想快速的掌握R语言,然而,由于目前大部分高校都没有开设R语言课程,这就导致很多人不知道如何着手学习R语言. 对于初学R语言的人,最常见的方式是:遇到不会的地方,就跑 ...

  10. (转)如何学好C语言,一个成功人士的心得!

    zidier111发表于 2013-1-26 08:59:05   今 天,我能够自称是一个混IT的人,并能以此谋生,将来大家能一次谋生,都要感谢两个人:克劳德.香农和约翰.冯.诺依曼,是他们发现了所 ...

随机推荐

  1. 记一次WPF的DataGrid绑定数据

    之前一直在用winform,但是感觉界面不好看,然后就自己在网上学习WPF.一开始看到DataGrid的时候,还以为它是DataGridView,然后用winform的方法绑定数据发现不行,在不断的查 ...

  2. 【Oracle】使用PL/SQL快速查询出1-9数字

    [Oracle]使用PL/SQL快速查询出1-9数字 简单来说,直接Recursive WITH Clauses 在Oracle 里面就直接使用WITH result(参数)即可 WITH resul ...

  3. win10更新后使用ie浏览器自动跳转edge的解决方法

    win10更新后使用ie浏览器自动跳转edge的解决方法 ①在系统的搜索框中搜索internet选项 ②打开界面中,选择高级的栏位 ③然后在红框的地方找到启用第三方浏览器扩展,去掉勾选 ④应用,确定, ...

  4. DataWorks 功能实践速览

    ​简介: DataWorks功能实践系列,帮助您解析业务实现过程中的痛点,提高业务功能使用效率! 功能推荐:独享数据集成资源组 如上期数据同步解决方案介绍,数据集成的批数据同步任务运行时,需要占用一定 ...

  5. [FE] 被动检测 iframe 加载 src 成功失败的一种思路和方式 (Vue)

    思路:设置定时器一个,n 秒后设置 404 或其它,此时给 iframe 的 onload 事件设置回调函数,加载完成则取消定时器. 示例: data () { return { handler: n ...

  6. [FAQ] Solidity 并发执行 ? 重入攻击 ?

    Solidity 实现的合约中,函数操作都是原子操作,旷工本地执行,取得共识后发布到区块链上. 实际发布到区块链上的不存在并发,全节点同步状态到本地. Solidity 中有三种方式进行转账,addr ...

  7. 使用 Kafka Assistant,为您的开发加速

    简要介绍 快速查看所有 Kafka 集群,包括Brokers.Topics和Consumers 支持各种认证模式:PLAINTEXT.SASL_PLAINTEXT.SSL.SASL_SSL 对Kafk ...

  8. html+jq实现全国省的单选,弹框输入input

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...

  9. vue点击旋转,再点击复原

    效果: 1.html.通过绑定t值控制不同的class名, 原图是右边方向的箭头 <img class="right" v-if="item.t" src ...

  10. Java数字转中文数字——支持:Integer、BigDecimal

    1.效果 public static void main(String[] args) { System.out.println(int2chineseNum(3456)); System.out.p ...