一起学Golang系列(三)第一个Go语言程序 helloworld

简介: 前面我们介绍了Golang的环境搭建,如何安装、配置Golang环境、配置Go工作目录:GOPATH。通过前面学习想必大家已经对Golang有了一定的了解,那要怎么来创建一个Go语言程序呢?下面就来带领大家实现一个简单的程序:helloworld。

前面我们介绍了Golang的环境搭建,如何安装、配置Golang环境、配置Go工作目录:GOPATH。

通过前面学习想必大家已经对Golang有了一定的了解,那要怎么来创建一个Go语言程序呢?下面就来领大家实现一个简单的程序:helloworld。


一、创建第一个GO程序

下面创建我们第一个Go程序,helloworld。其实非常简单,仅需要几行代码就可以搞定,如下所示:

package main 
import (
    "fmt"
)
func main() {
    fmt.Println("Hello World!") 
}

将上面的程序保存成 helloworld.go,然后在命令行中执行:go run helloworld.go

image.png

我们看到程序成功输出:Hello World!,说明我们的第一个Golang程序运行成功。


二、GO程序的基本结构

上面,我们成功创建并运行了一个helloworld.go 。虽然程序运行了,但是,想必大家也许不明白这些代码的含义,没关系,下面就来一一介绍:

1. package(声明main包)

Go语言以“包”作为管理单位,每个 Go 源文件必须先声明它所属的包,所以我们会看到每个 Go 源文件的开头都是一个 package 声明,格式如下:package mian

其中 package 是声明包名的关键字,main 为具体包的名字。


Go语言的包与文件夹是一一对应的,它具有以下几点特性:

  • 一个目录下的同级文件属于同一个包。
  • 包名可以与其目录名不同。
  • main 包是Go语言程序的入口包,一个Go语言程序必须有且仅有一个 main 包。如果一个程序没有 main 包,那么编译时将会出错,无法生成可执行文件。


2. import(导入包)

在包声明之后,是 import 语句,用于导入程序中所依赖的包,导入的包名使用双引号""包围,格式如下:

import "fmt"

其中 import 是导入包的关键字,fmt为所导入包的名字,是Go提供的标准库。

需要注意的是,导入的包中不能含有代码中没有使用到的包,否则Go编译器会报编译错误,例如 imported and not used: "xxx","xxx" 表示包名。


3. main 函数

通过func main() 创建了一个 main 函数,它是Go语言程序的入口函数,也即程序启动后运行的第一个函数。main 函数只能声明在 main 包中,不能声明在其他包中,并且,一个 main 包中也必须有且仅有一个 main 函数。这个跟C或是C++类似。

main 函数是自定义函数的一种,在Go语言中,所有函数都以关键字 func 开头的,定义格式如下所示:

func 函数名 (参数列表) (返回值列表){
}

格式说明如下:

  • 函数名:由字母、数字、下画线_组成,其中,函数名的第一个字母不能为数字,并且,在同一个包内,函数名称不能重名。
  • 参数列表:一个参数由参数变量和参数类型组成,例如func foo( a int, b string )
  • 返回值列表:可以是返回值类型列表,也可以是参数列表那样变量名与类型的组合,函数有返回值时,必须在函数体中使用 return 语句返回。

注意:Go语言函数的左大括号{必须和函数名称在同一行,否则会报错。


4.  fmt.Println("Hello World!")

调用fmt包中的Println函数格式化输出相关的内容。比如字符串、整数、小数等,与C语言中printf 函数类似。


另外,我们看到Go语言不需要使用;来作为结束符,Go 编译器会自动帮我们添加,当然,在这里加上;也是可以的。


三、编译&运行

上面的helloworld示例程序编写完之后,接下来我们运行helloworld.go,验证是否执行成功。在命令行中执行:go run helloworld.go 编译运行该程序,输出结果如下:

image.png


Golang还提供了go test、go run、go build 、命令主要是用于测试、编译、运行、打包程序。在包的编译过程中,若有必要,会同时编译与之相关联的包。

  • go build 命令主要用于打包项目
  • go run 命令主要用于编译并运行Go程序。例如:go run helloworld.go   
  • go test 命令会自动读取源码目录下面名为*_test.go的文件,生成并运行测试用的可执行文件。


最后

以上,我们第一个Go语言程序:helloworld 创建并运行成功了,相信大家已经知道如何创建一个简单的Go语言程序了,赶快动手试试吧!



相关文章
|
7月前
|
存储 安全 Java
【Golang】(4)Go里面的指针如何?函数与方法怎么不一样?带你了解Go不同于其他高级语言的语法
结构体可以存储一组不同类型的数据,是一种符合类型。Go抛弃了类与继承,同时也抛弃了构造方法,刻意弱化了面向对象的功能,Go并非是一个传统OOP的语言,但是Go依旧有着OOP的影子,通过结构体和方法也可以模拟出一个类。
384 2
|
12月前
|
Kubernetes Linux Go
使用 Uber automaxprocs 正确设置 Go 程序线程数
`automaxprocs` 包就是专门用来解决此问题的,并且用法非常简单,只需要使用匿名导入的方式 `import _ "go.uber.org/automaxprocs"` 一行代码即可搞定。
509 78
|
Go
Golang语言之管道channel快速入门篇
这篇文章是关于Go语言中管道(channel)的快速入门教程,涵盖了管道的基本使用、有缓冲和无缓冲管道的区别、管道的关闭、遍历、协程和管道的协同工作、单向通道的使用以及select多路复用的详细案例和解释。
810 4
Golang语言之管道channel快速入门篇
|
Go
Golang语言文件操作快速入门篇
这篇文章是关于Go语言文件操作快速入门的教程,涵盖了文件的读取、写入、复制操作以及使用标准库中的ioutil、bufio、os等包进行文件操作的详细案例。
362 4
Golang语言文件操作快速入门篇
|
Go
Golang语言之gRPC程序设计示例
这篇文章是关于Golang语言使用gRPC进行程序设计的详细教程,涵盖了RPC协议的介绍、gRPC环境的搭建、Protocol Buffers的使用、gRPC服务的编写和通信示例。
674 3
Golang语言之gRPC程序设计示例
|
安全 Go
Golang语言goroutine协程并发安全及锁机制
这篇文章是关于Go语言中多协程操作同一数据问题、互斥锁Mutex和读写互斥锁RWMutex的详细介绍及使用案例,涵盖了如何使用这些同步原语来解决并发访问共享资源时的数据安全问题。
524 4
|
Go 数据处理 开发者
Go 语言的反射机制允许程序在运行时动态检查和操作类型信息,提供极大的灵活性和扩展性
Go 语言的反射机制允许程序在运行时动态检查和操作类型信息,提供极大的灵活性和扩展性。本文探讨了反射的基本原理、主要操作、应用场景及注意事项,并通过实例展示了反射的实际应用,帮助开发者更好地理解和使用这一强大特性。
253 2
|
Prometheus Cloud Native Go
Golang语言之Prometheus的日志模块使用案例
这篇文章是关于如何在Golang语言项目中使用Prometheus的日志模块的案例,包括源代码编写、编译和测试步骤。
357 4
Golang语言之Prometheus的日志模块使用案例
|
Go 调度
Golang语言goroutine协程篇
这篇文章是关于Go语言goroutine协程的详细教程,涵盖了并发编程的常见术语、goroutine的创建和调度、使用sync.WaitGroup控制协程退出以及如何通过GOMAXPROCS设置程序并发时占用的CPU逻辑核心数。
1017 4
Golang语言goroutine协程篇
|
前端开发 中间件 Go
实践Golang语言N层应用架构
【10月更文挑战第2天】本文介绍了如何在Go语言中使用Gin框架实现N层体系结构,借鉴了J2EE平台的多层分布式应用程序模型。文章首先概述了N层体系结构的基本概念,接着详细列出了Go语言中对应的构件名称,包括前端框架(如Vue.js、React)、Gin的处理函数和中间件、依赖注入和配置管理、会话管理和ORM库(如gorm或ent)。最后,提供了具体的代码示例,展示了如何实现HTTP请求处理、会话管理和数据库操作。
344 1

推荐镜像

更多