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. Git 中 HEAD、工作树和索引之间的区别

    一.HEAD 在git中,可以存在很多分支,其本质上是一个指向commit对象的可变指针,而Head是一个特别的指针,是一个指向你正在工作中的本地分支的指针 简单来讲,就是你现在在哪儿,HEAD 就指 ...

  2. Oracle 一些触发器自治事务相关错误

    Oracle 一些触发器自治事务相关错误 table XXX is mutating,trigger/function may not see it 在触发器中调用的函数或者语句有查询当前表的操作,比 ...

  3. 第五課-Channel Study TCP Listener & Web Service Listener

    示例描述: 我们将研究如何获取相当常见的HL7 v2消息并将其映射到自定义Web Service接口服务.在许多实际情况下,当我们要连接到HIE,EMPI,数据仓库或数据存储库时,必须这样做.此用例说 ...

  4. 力扣1045(MySQL)-买下所有产品的客户(中等)

    题目: Customer 表: Product 表: 写一条 SQL 查询语句,从 Customer 表中查询购买了 Product 表中所有产品的客户的 id. 示例:  解题思路: 建表语句: 1 ...

  5. C#类型后加问号?

    C# 可空类型(Nullable)说明_w3cschool 细说Nullable<T>类型 - Sweet-Tang - 博客园 (cnblogs.com) 值类型变量不能null,加问号 ...

  6. WinForm 下的高性能笔迹方法

    在 WPF 中可以通过 StylusPlugIn 的方式快速从触摸线程拿到触摸数据,而 WinForms 没有这个机制,但是可以通过 Microsoft.Ink 组件和 WPF 相同在 RealTim ...

  7. kubernetes 存储流程

    PV 与 PVC PVC (PersistentVolumeClaim),命名空间(namespace)级别的资源,由 用户 or StatefulSet 控制器(根据VolumeClaimTempl ...

  8. 用 Certbot-auto 在 letsencrypt.org申请免费 SSL 证书实现 HTTPS

    参考帖子 https://www.cnblogs.com/lzpong/p/6433189.html https://www.cnblogs.com/756623607-zhang/p/1163850 ...

  9. hexo 博客插入本地图片时遇到的坑

    哈喽大家好,我是咸鱼. 最近一直在折腾博客的事,说是 hexo 极易上手,我觉得只仅限于在安装部署的时候,随着对 hexo 的深入使用,发现遇到的问题还是挺多的. 那今天来讲一下我在把本地图片插入到 ...

  10. n个人围成一圈,顺序排号从1到n。从第一个人开始报数(从一到三如此循环)。凡是报到三的出局,最后剩下的一个人原始编号为?

    #include<stdio.h> int main(){ int num,n,i=0,flag=0; //num记录剩余人数,n记录总人数,i为原始编号,flag为编号123时的编号 p ...