专栏首页cnSwiftGolang语言教程之hello,world

Golang语言教程之hello,world

学习新语言通常从hello,world开始,本文通过hello,world示例代码来介绍一下Golang 语言的基础知识。

package main

import "fmt"
func main () {
   fmt.Println("Hello,世界")
}

基础介绍

Go 不同于PHP,它是编译型的语言,Go的工具链将程序的源文件转变成机器相关的原生二进制指令。 这些工具可以通过单一的go 命令配合其子命令进行使用。 今天主要讲两个子命令: 最简单的子命令是run ,它将一个或多个以.go 为后缀的源文件进行编译、链接, 然后运行生成的可执行文件。

go run helloworld.go

// 输出:

Hello,世界

Go 原生地支持Unicode ,所以它可以处理所有国家的语言。 另外一个子命令是build 它可以编译输出成一个可复用的二进制程序

go build helloworld.go

这条命令生成了一个叫做helloworld 的二进制程序 它可以不用进行任何其他处理,随时执行:

./helloworld

// 输出:

Hello,世界

代码讲解

Go 代码是使用包来组织的,包类似于PHP语言中的模块 一个包由一个或多个.go 源文件组成,放在一个文件夹中,通常该文件夹的名字描述了包的作用 package 包声明 每一个源文件的开头都以package 声明,指明这个文件属于哪个包 import 导入声明 后面跟着它导入的其它包的列表,以import 声明 例子里面只导入了一个fmt 包,如果导入多个包,有两种方式: 方式1:

import "fmt"
import "os"

方式2:

import (
   "fmt"
   "os"
)

Go 的标准库中有100多个包,每个包中又有许多完成编写程序时的一些常规任务的函数 特殊的包 - main包 main包比较特殊,它用来定义一个独立的可执行程序,而不是库 main包中的main函数也是特殊的,它总是程序开始执行的地方,通常main函数会调用其它包中的函数来做更多的事情 必须精确导入程序需要的包,在缺失导入或者存在不需要的包时,编译会失败,这种严格的要求可以防止程序中引用不需要的包 程序声明 然后是一些程序声明(函数、变量、常量、类型),通常以func、var、const、type 开头 一般情况下,声明的顺序是随意的 示例中在import 导入声明后面,只声明了一个函数,这个函数只调用了一个其他函数 一个函数的声明由func 关键字、函数名、参数列表(main 函数为空)、返回值列表(可以为空)、函数体(放在大括号内)组成 Go 和PHP 还有一个不同的地方是,Go 代码不需要在语句后面使用分号结尾,除非有多个语句写在同一行,实际上跟在特定符号后面的换行符被转换为分号了,所以 在什么地方换行会影响Go 代码的解析

代码格式化

Go 对于代码的格式化要求非常严格。这里又要讲一个go 命令的子命令fmt 它可以格式化指定包里的所有文件或者当前文件夹中的文件 许多编辑器可以配置为每次保存文件时自动运行go fmt 此外推荐一个可以按需管理导入声明的插入和移除的工具 goimports 它不是标准发布的一部分,可以通过执行下面命令获取到: go get golang.org/x/tools/cmd/goimports

总结

本文通过helloworld 示例程序,介绍了Go 程序如何运行、Go 程序的组成和一些Go 命令介绍,其中需要特别强调的是Go 代码中package 包声明,import 导入 声明、程序声明的顺序必须按照示例代码中排列,不可随意排列。

本文分享自微信公众号 - cnSwift(close_3082755329),作者:frankphper

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • PHP语言教程-魔术方法之属性重载和方法重载

    PHP魔术方法是以 __ 两个下划线开头的方法,具有魔术功能的一些方法,本文主要讲实现属性重载和方法重载的魔术方法。

    frankphper
  • Golang语言之JSON解码函数Unmarshal

    工作中我们经常会遇到解码JSON格式的数据,本文通过4个示例介绍工作中常用到的四种 JSON格式。在 Golang语言中,通常是使用标准库的encoding/j...

    frankphper
  • go语言字符串类型储存解析

    在这篇文章中,将对字符串进行展开。字符串是一串固定长度的字符连接起来的字符集合。go语言中的字符串使用utf-8编码。

    暮雨
  • Golang语言--包的概念、导入与可见性

    go中包的概念、导入与可见性 ? 包是结构化代码的一种方式:每个程序都由包(通常简称为 pkg)的概念组成,可以使用自身的包或者从其它包中导入内容。 如同其它一...

    李海彬
  • C语言(一个真实的故事)

    曾经有一个简单又不失牛逼的小技巧,老师教的时候我没有珍惜,等到同事因为用了这个技巧升任总工才后悔莫及,如果上天再给我一次机会,我会对老师说:我要学!如果非要定个...

    用户2617681
  • Go 程序的基本结构和要素

    示例 package main import "fmt" func main() { fmt.Println("hello, world") } 包...

    若与
  • python3-001-多线程简单聊天室

            这次代码为python3编写,并且使用网络调试助手、与python3聊天室程序进行通信测试。

    用户2398817
  • Objective-C源文件编译过程

    Objective-C文件的编译过程主要包括clang前端的预处理、编译、后端优化中间表示、生成汇编指令、链接、生成机器码这几个步骤。我们可以借助clang -...

    VV木公子
  • Go语言结构

    在我们开始学习 Go 编程语言的基础构建模块前,让我们先来了解 Go 语言最简单程序的结构。

    超蛋lhy
  • 【基础篇】Go 语言结构

    Go Hello World 实例 Go 语言的基础组成有以下几个部分: 包声明 引入包 函数 变量 语句 & 表达式 注释 接下来让我们来看下简单的代码,该代...

    李海彬

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动