前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go语言的“Hello World”

Go语言的“Hello World”

作者头像
哒呵呵
发布2018-08-06 11:29:08
1.8K0
发布2018-08-06 11:29:08
举报
文章被收录于专栏:鸿的学习笔记

一直对Go语言很好奇,周末有空研究了下Golang,首先能在电脑上跑出“Hello World!”:

代码语言:javascript
复制
// HelloWorld
package main

import (
    "fmt"
)

func main() {
    fmt.Println("Hello World!")
}
宏观角度

在Go语言里,print不是系统默认的关键字或默认引入的模块,变成一个类似于外部,需要导入的模块,print只是这个包里的一个函数。深入去看fmt包,会注意到这里面包含了很多函数,后续再慢慢研究。在这段代码里,发现Go语言并不是一个纯粹的面向对象的编程语言,面向过程和面向对象兼之,并且具备一般高级语言都具有的自动垃圾回收。

细看

上面只是一些直观的感受,现在从第一行代码再来具体看看:

  1. 一个Go的源代码都必须包含Package,表示这个代码文件所属的包,这一点和Java很像,通过Package的使用具体了工程上的依赖。从Google的结果来看,要生成一个可执行的文件,必须要有一个main包和一个main函数,作为整个工程的入口,类似于Java的main方法,但是Java的main方法并不要求一定是main的package。
  2. Go语言使用了()将引入的包放在一块,当然,也可以写成import "fmt",此外,代码的换行并没有要求;号,回到import语句,引入的包必须要有双引号,否则就会报错:
代码语言:javascript
复制
can't load package: package .: 
HelloWorld.go:4:12: expected 'STRING', found newline
HelloWorld.go:6:1: expected ';', found 'func'

Google一下:双引号用来创建可解析的字符串字面量(支持转义,但不能用来引用多行),这里表示应该是Go的String类型,Go把String和字符变量分的很清楚。

  1. 有趣的是,当尝试引入mian函数没有使用的包,Go会报错:
代码语言:javascript
复制
.\HelloWorld.go:6:2: imported and not used: "os"

将大括号{}写在下面时:

代码语言:javascript
复制
func main() 
{
    fmt.Println("Hello World!"
}

也会报错:

代码语言:javascript
复制
.\HelloWorld.go:9:1: syntax error: unexpected semicolon or newline before {

看来Go语言将工程上的要求变成了代码的内置特性。

  1. Go里的函数以关键字func开头,一个标准的函数体是:
代码语言:javascript
复制
func 函数名(参数列表)(返回值列表){
    //函数体
}

此外Go对函数名的大小写命名还有语言层面的限制,大写的函数名在包外可见,如Println,否则只能在包内引用。

结论

总的来说,Go语言将代码的格式化放到了语言层面来做,这一点很有趣,起码可以从语言层面保证在工程上代码的一致性,而不需引入如Python的Pylint之类的工具。面向对象的特性不再是语言强制的了(其实Go和Python都是想明白了的,所谓的面向对象本质上还是使用了指针的面向过程代码,Python的self和Java的this都起到了指针的关键作用,大道至简),Go更多的语言特性还需要后面慢慢研究。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-07-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 鸿的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 宏观角度
  • 细看
  • 结论
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档