Go语言的“Hello World”
时间:2022-06-05
本文章向大家介绍Go语言的“Hello World”,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一直对Go语言很好奇,周末有空研究了下Golang,首先能在电脑上跑出“Hello World!”:
// HelloWorld
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello World!")
}
宏观角度
在Go语言里,print不是系统默认的关键字或默认引入的模块,变成一个类似于外部,需要导入的模块,print只是这个包里的一个函数。深入去看fmt包,会注意到这里面包含了很多函数,后续再慢慢研究。在这段代码里,发现Go语言并不是一个纯粹的面向对象的编程语言,面向过程和面向对象兼之,并且具备一般高级语言都具有的自动垃圾回收。
细看
上面只是一些直观的感受,现在从第一行代码再来具体看看:
- 一个Go的源代码都必须包含Package,表示这个代码文件所属的包,这一点和Java很像,通过Package的使用具体了工程上的依赖。从Google的结果来看,要生成一个可执行的文件,必须要有一个main包和一个main函数,作为整个工程的入口,类似于Java的main方法,但是Java的main方法并不要求一定是main的package。
- Go语言使用了()将引入的包放在一块,当然,也可以写成import "fmt",此外,代码的换行并没有要求;号,回到import语句,引入的包必须要有双引号,否则就会报错:
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和字符变量分的很清楚。
- 有趣的是,当尝试引入mian函数没有使用的包,Go会报错:
.HelloWorld.go:6:2: imported and not used: "os"
将大括号{}写在下面时:
func main()
{
fmt.Println("Hello World!"
}
也会报错:
.HelloWorld.go:9:1: syntax error: unexpected semicolon or newline before {
看来Go语言将工程上的要求变成了代码的内置特性。
- Go里的函数以关键字func开头,一个标准的函数体是:
func 函数名(参数列表)(返回值列表){
//函数体
}
此外Go对函数名的大小写命名还有语言层面的限制,大写的函数名在包外可见,如Println,否则只能在包内引用。
结论
总的来说,Go语言将代码的格式化放到了语言层面来做,这一点很有趣,起码可以从语言层面保证在工程上代码的一致性,而不需引入如Python的Pylint之类的工具。面向对象的特性不再是语言强制的了(其实Go和Python都是想明白了的,所谓的面向对象本质上还是使用了指针的面向过程代码,Python的self和Java的this都起到了指针的关键作用,大道至简),Go更多的语言特性还需要后面慢慢研究。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python部署rad+xray自动化
- 2.建立第一个django项目与配置
- Flutter基础widgets教程-Radio篇
- Django中的QuerySet
- Python—requests模块详解
- python爬虫伪装请求头---fake-useragent
- Flutter基础widgets教程-RaisedButton篇
- 记一次 excel vba 参考手册爬虫实战,不必要的一次爬虫。
- xray子域名扫描结果导出
- AWS的湖仓一体使用哪种数据湖格式进行衔接?
- python 行政区域地址标准化:业务经理填报的地址乱起八糟,高德接口有点厉害!
- python 行政区域地址标准化:业务经理填报的地址乱起八糟,高德接口有点厉害! -- 后续,使用分词思路完成解析
- pandas 一维台账数据与二维表格数据的转换
- Flutter基础widgets教程-Row篇
- padans 关于数据处理的杂谈 -- 时序数