我是做java开发的,从接触java开始算,已经8年了,为什么会想到学go语言呢?前端时间我一直在学习jvm,java的一些更底层的东西,梳理回顾时,感觉可以通过学习其他开发语言,来提升我对java的理解,站在另一个角度来看java。但是又怕是蜻蜓点水式的学,达不到效果,于是有了接下来的文章,希望能写下去。
   
      go的历史这里就不谈了,算一个很有背景的语言。后面的文章内容,基本都会涉及到go语言和java的比较。
 
      我们开始吧!我们先向以前的编程前辈致敬,来一个hello world。
 
package main

import "fmt"

func main() {
// 单行注释
/*
多行注释
*/ fmt.Println("Hello, World!")
}

  

 
代码分三部分
  • 包声明
  • 导入包
  • 函数
 
包声明:go语言限制程序入口的go文件,必须命名为main,否则报错。

go run: cannot run non-main package

  

 
导入包:后面的输出语句用到了fmt包。但是go语言有个不同的地方是如果后面代码里没有用到前面导入的bao,将会报错。
# command-line-arguments
./hello_world.go:4: imported and not used: "flag"

  

 
函数:我们看到go语言的入口是一个函数,没有类存在。func是go语言定义函数的关键字。函数名是main,入口函数约定了函数名必须叫main,否则报错:
# command-line-arguments
runtime.main: call to external function main.main
runtime.main: main.main: not defined
runtime.main: undefined: main.main

  

注释:代码中我们能看到有单行注释和多行注释的格式。
 
我们看到函数后面跟了一个 大括号({   ),很多人会觉得这只是一些编程习惯。其实go语言语法要求大括号的前半部分必须要接在一个语句后面,不能另起一行,如下:
xxx {
yyyy
}

  

否则,报错:
# command-line-arguments
./hello_world.go:6: syntax error: unexpected semicolon or newline before {

  

 
后面go语言的其他地方,都有这方面的要求。
 
 
我们看看java语言的hello world 。
 
public class Test {

    public static void main(String args[]) {
System.out.println("hello world !");
} }

  

其实java的限制就很少了,我们的包名都可以不设定,他只是对main方法有要求。go里面没有要求mian方法归属一个类。
 
 

go学习开篇的更多相关文章

  1. 总结暨JAVAWEB学习开篇(一)

    匆匆,距上一篇博客已经过去7月有余,遂作文一篇总结暨JAVAWEB学习开篇. 1. 啃英文新概念.在多方讨教英语大佬后改变学习方式,通过背诵英文书籍以及多听英文录音来学习,效果还不错(等真正有成效了跟 ...

  2. HTML学习开篇

    最近开的博客,一切都是从零开始,昨天刚写了java的开篇,今天写一写HTML开篇. 很多初学者都不太看重前端的学习,甚至鄙视前端,我刚开始时就这样.其实,要想成为一个真正的程序员,前端和后端都必须了解 ...

  3. Web前端学习开篇

    首先想想自己喜欢干什么?想干什么?脑袋需要什么?什么对自己来说最重要?自己的规划? 本人数字媒体技术专业,想学Web前端开发有好长时间了,有一定的基础,所以就想进一步深入学习.谁料想,我怎么那么没有耐 ...

  4. Node学习——开篇

    前言:自从下决心转学前端以来,我的专业课java基本荒废了,所以对于后台开发的逻辑也已基本忘干净了.但是作为一名准前端程序猿,我认为还是有必要了解后端开发的,虽不必深入学习,但是能够了解项目从前端到后 ...

  5. Python 学习开篇

    前言 最近看到一张图,有点意思: 蓝色是(成长+付出),红色是回报.有多久可以达到这个红心,要看我们自已的努力,付出了多少专注与汗水.我想说的是,水平轴并不是时间,如果不能坚持努力,可能永远都到不了那 ...

  6. php源码学习——开篇

    这个系列是对php源码的学习记录.由于本人水平有限,可能并不能写的非常清晰和深入,所以,可能只适合本人阅读:) 初次接触php源码,看到陌生的文件夹和大量的文件,可能会觉得茫然无措.php-inter ...

  7. python零基础学习开篇

    我是某工业大学的一名博士,研究方向是基于人脸的模式识别.很遗憾,毕业后没有继续从事图像处理中模式识别相关研究.多种原因进入了一家国企单位,从事交通方面工作.工作2年中一直迷茫,没有在工作岗位中找到自己 ...

  8. 《OpenResty 最佳实践》学习开篇

    前言:对openresty学习中,收集了一些相关知识的参考网站,有兴趣的可以看看.另附网盘分享. lua菜鸟教程 openresty最佳实战 lua在线解析工具 Nginx Lua API Nginx ...

  9. java多线程学习-开篇

    1.Java线程基本概念 在操作系统中两个比较容易混淆的概念是进程(process)和线程(thread).操作系统中的进程是资源的组织单位.进程有一个包含了程序内容和数据的地址空间,以及其它的资源, ...

随机推荐

  1. Swagger2异常:Illegal DefaultValue null for parameter type integer java

    一.异常分析: Illegal DefaultValue null for parameter type integer`和`NumberFormatException: For input stri ...

  2. 浅谈 OpenResty,基于opebresty+redis进行实时线上限流

    一.前言 我们都知道Nginx有很多的特性和好处,但是在Nginx上开发成了一个难题,Nginx模块需要用C开发,而且必须符合一系列复杂的规则,最重要的用C开发模块必须要熟悉Nginx的源代码,使得开 ...

  3. github与pycharm

    再也不要使用命令行了 OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443

  4. redis 慢查询、Pipeline

    1.慢查询 简介 慢查询顾名思义是将redis执行命令较慢的命令记录下来,redis处理慢查询时是将慢查询记录到慢查询队列中 慢查询配置 slowlog-max-len 慢查询队列长度(记录多少条慢查 ...

  5. 后缀数组练习2:可重叠的k次最长重复子串

    其实和上一题是差不多的,只是在二分check的时候有一些小小的改动 1468: 后缀数组2:可重叠的k次最长重复子串 poj3261 时间限制: 1 Sec  内存限制: 128 MB提交: 113  ...

  6. Codeforces 1237C2. Balanced Removals (Harder)

    传送门 先来考虑一下二维时的情况,那么对于 $x$ 相同的点,我们按 $y$ 排序,然后相邻的一对对消除 最后 $x$ 坐标相同的点最多剩下一个,那么此时所有点的 $x$ 坐标都不一样 再按 $x$ ...

  7. ajax-springMVC提交表单的方式

    1.request参数提交(Form提交),适用于GET/POST request参数传递都会转换成 id=123&fileName=test.name&type=culture_ar ...

  8. SharePoint 创建母版页

    一.前言 文章成体系,如果有不明白的地方请查看前面的文章. 二.目录 1.创建HTML页面 2.将HTML文件转换为SharePoint母版页 3.在 SPD中修改母版页“PlaceHolderMai ...

  9. linux mysql-5.7.26 安装全记录

    买了个阿里云,自己折腾一下. 时间:2019年7月17日13:40:18 1.下载 wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7. ...

  10. 【题解】P3391 文艺平衡树

    用pb_ds库中的rope水过去的,忽然发现这玩意能水好多模拟题. 详见这个博客:背景的小姐姐真的好看 声明 #include <ext/rope> using namespace __g ...