`

你好,Go

阅读更多

你好,Go

Go语言是一门类似C语言的编译型语言,它的编译速度非常快。这门语言的关键字一共25个,比所有英文字母还少一个,这对于我们的学习来说非常有利。先让我们看一看这些关键字都长什么样。

break    default     func    interface    select

case     defer        go     map          struct

chan     else         goto   package      switch

const    fallthrough if      range        type

continue for          import  return      var

本章中,笔者将带领你去学习Go语言的基础。通过每一小节的介绍,你将发现,Go语言的世界是多么简洁,设计是如此美妙,编写Go语言将会是一件愉快的事情。等回过头来,你就会发现这25个关键字是多么亲切。

在开始编写应用之前,我们先从最基本的程序开始。就像你造房子之前不知道什么是地基一样,编写程序也不知道如何开始。因此,在本节中,我们要学习用最基本的语法让Go语言程序运行起来。

程序

这就像一个传统,在学习大部分语言之前,你先学会如何编写一个可以输出Hello World的程序。

准备好了吗?让我们开始吧!

package main

 

import "fmt"

 

func main() {

    fmt.Printf("Hello, world or 你好,世界 or καλημ ́ρα κóσμor こんにちは世界\n")

}

输出如下。

Hello, world or 你好,世界 or καλημ ́ρα κóσμor こんにちは世界

详解

首先我们要了解一个概念,Go语言程序是通过package来组织的。

package <pkgName>(在我们的例子中是package main)这一行告诉我们当前文件属于哪个包,而包名main则告诉我们它是一个可独立运行的包,它在编译后会产生可执行文件。除了main包之外,其他 的包最后都会生成*.a文件(也就是包文件),并放置在$GOPATH/pkg/$GOOS_$GOARCH中(以Mac为例就是$GOPATH/pkg /darwin_amd64)。

每一个可独立运行的Go语言程序,必定包含一个package main,在这个main包中必定包含一个入口函数main,而这个函数既没有参数,也没有返回值。

为了打印Hello, World...,我们调用了一个函数Printf,这个函数来自于fmt包,所以我们在第三行中导入了系统级别的fmt包:import"fmt"。

包的概念和Python中的module相同,它们都有一些特别的好处:模块化(能够把程序分成多个模块)和可重用性(每个模块都能被其他应用程序反复使用)。我们在这里只是先了解一下包的概念,后面我们将会编写自己的包。

在第五行,我们通过关键字func定义了一个main函数,函数体被放在{}中,就像我们平时写C、C++或Java时一样。大家可以看到main函数是没有任何参数的,我们接下来就学习如何编写带参数的、返回0个或多个值的函数。

第六行,我们调用了fmt包里面定义的函数Printf。大家可以看到,这个函数通过<pkgName>.<funcName>的方式调用,这一点和Python十分相似。

前面提到过,包名和包所在的文件夹名可以是不同的,此处的<pkgName>即为通过package<pkgName>声明的包名,而非文件夹名。

最后大家可以看到我们输出的内容里面包含了很多非ASCII码字符。实际上,Go语言是天生支持UTF-8的,任何字符都可以直接输出,你甚至可以用UTF-8中的任何字符作为标识符。

小结

Go 语言使用package(和Python的模块类似)来组织代码。main.main()函数(这个函数主要位于主包)是每一个独立的可运行程序的入口 点。Go语言使用UTF-8字符串和标识符(因为UTF-8的发明者也就是Go语言的发明者),所以它天生就具有多语言的支持。

 

Go语言基础

 

定义变量

Go语言里面定义变量有多种方式。

使用var关键字是Go语言最基本的定义变量方式,与C语言不同的是Go语言把变量类型放在变量名后面,如下所示。

//定义一个名称为“variableName”,类型为"type"的变量

var variableName type

定义多个变量。

//定义三个类型都是“type”的三个变量

var vname1, vname2,vname3 type

定义变量并初始化值。

//初始化“variableName”的变量为“value”值,类型是“type”

var variableName type= value

同时初始化多个变量。

/*

    定义三个类型都是"type"的三个变量,并且它们分别初始化相应的值

    vname1为v1,vname2为v2,vname3为v3

*/

var vname1, vname2, vname3 type= v1, v2, v3

你是不是觉得上面这样的定义有点繁琐?没关系,因为Go语言的设计者也发现了,有一种写法可以让它变得简单一点。我们可以直接忽略类型声明,那么上面的代码变成如下所示。

/*

    定义三个变量,它们分别初始化相应的值

    vname1为v1,vname2为v2,vname3为v3

    然后Go会根据其相应值的类型来帮你初始化它们

*/

var vname1, vname2, vname3 = v1, v2, v3

你觉得上面的还是有些繁琐?好吧,让我们继续简化。

/*

    定义三个变量,它们分别初始化相应的值

    vname1为v1,vname2为v2,vname3为v3

    编译器会根据初始化的值自动推导出相应的类型

*/

vname1, vname2, vname3 := v1, v2, v3

现在是不是看上去非常简洁了“?:=”这个符号直接取代了var和type,这种形式叫做简短声明。不过它有一个限制,那就是它只能用在函数内部;在函数外部使用则会无法编译通过,所以一般用var方式来定义全局变量。

_(下画线)是个特殊的变量名,任何赋予它的值都会被丢弃。在这个例子中,我们将值35赋予b,并同时丢弃34。

_, b := 34, 35

Go语言对于已声明但未使用的变量会在编译阶段报错,比如下面的代码就会产生一个错误:声明了i但未使用。

package main

 

func main() {

    var i int

}

常量

所谓常量,也就是在程序编译阶段就确定下来的值,而程序在运行时则无法改变该值。在Go语言程序中,常量可定义为数值、布尔值或字符串等类型。

它的语法如下。

const constantName =value

//如果需要,也可以明确指定常量的类型:

const Pi float32 =3.1415926

以下是一些常量声明的例子。

const Pi = 3.1415926

const i = 10000

const MaxThread = 10

const prefix = "astaxie_"

 

 

本文节选自《Go Web编程》一书

谢孟军 著

电子工业出版社出版

分享到:
评论

相关推荐

    你好,Go语言:编写你的第一个 Go语言程序.pdf

    这是我整理的一本 Go 语言第一个极简程序编写的电子书,欢迎下载.

    go语言web编程

    2.Go语言基础 2.1. 你好,Go 2.2. Go基础 2.3. 流程和函数 2.4. struct 2.5. 面向对象 2.6. interface 2.7. 并发 2.8. 小结 3.Web基础 3.1 web工作方式 3.2 Go搭建一个简单的web服务 3.3 Go如何使得web工作 3.4 Go的...

    go-hello-world:Golang你好世界

    你好世界这是一个示例存储库。 安装go get github.com/bluecodemonks/go-hello-world跑步$ go-hello-worldHello World卸载$ rm $GOPATH/bin/go-hello-world

    你好

    你好 教程:Go入门 开始使用Hello,World。 打开命令提示符并cd到您的主目录。 在Linux或Mac上: cd在Windows上: cd%HOMEPATH%为第一个Go源代码创建一个hello目录。 例如,使用以下命令: mkdir hello cd ...

    GO语言(golang)基础知识

    今天说一些golang的基础知识,还有你们学习会遇到的问题,先讲解hello word 代码如下: package main import “fmt” func main() {  fmt.Println(“你好,软件开发网”); } package name 包机制,每一个独立的go...

    英语900句,超实用第一册一、 Greetings 问候语1. Hello! / Hi! 你好!

    常用日常英语900句,很实用的3. I'm Kathy King. 我是凯西·金。 4. Are you Peter Smith? 你是彼得·史密斯吗? 5. Yes, I am. / No, I'm not..../ 不,我不是。...7. Fine, thanks....15. I have to go now. 我必须走

    Go-study:Go语言学习资料整理

    ├──你好 ├─────hello.go第一个Go程序Hello World ├──语法 ├─────var_const.go定义变量,常量的常用方法 ├─────var_scope.go变量的作用域 ├─────int_uint.go定义整型变量,范围 ├─...

    [ golang ] 第一个golang程序

    包是Go语言里最基本的分发单位,也是工程管理中依赖关系的体现。要生成Go可执行程序,必须建立一个名字为main的包,并且在该包中包含一个叫main()的函数(该函数是Go可执行程序的执行起点)。 Go语言的main()函数不...

    “你好!” 在每种编程语言中。-Android开发

    “你好!” 在每种编程语言中。 HelloWorld“你好,世界!” 在每种编程语言中。 当前列表Bash Dart Go Groovy HTML Haskell Java Julia Kotlin PHP Perl Python Ruby Rust Scala请求 贡献拉取请求欢迎所有拉取请求...

    森林你好动画课件.exe

    森林你好动画课件.exe

    go-lang:使用Go进行开发

    高朗 本文档将演示使用Go软件包进行开发 ...你好 Go中的Hello World 安装GoLang 步骤1: 验证版本go version go version go1.16.3 windows/amd64 步骤2:执行程式码 go mod init example.com/hello go run .

    go.tutorials:一些学习Google Go语言的教程

    Google Go语言课程 我刚刚开始学习新语言,那就是Google Go。 语言是相当新的东西,在那里有很多可以更改的东西。 主Go链接 如何建立 只需转到课程目录并运行make。 有些课程要求运行测试必须尽力而为或进行测试...

    seed-go:golang 的种子项目。 快速启动。 用各种cicd做实验

    获取/健康获取/文档获取/v1/你好获取 /v1/时间 获取 /web/ 获取/v1/用户获取/v1/设备POST /v1/用户POST /v1/设备 建造 go build ./... 测试 go test ./... -v -covermode=count -coverprofile=coverage.out 要么 ...

    tview:用Go编写的用于终端UI的丰富交互式小部件

    你好,世界 这个基本示例创建了一个标题为“ Hello,World!”的框。 并将其显示在您的终端中: package main import ( "github.com/rivo/tview" ) func main () { box := tview . NewBox (). SetBorder ( true )...

    Go语言hello world实例

    这就像一个传统,在学习大部分语言之前,你先学会如何编写一个可以输出hello world的程序。 准备好了吗?Let’s Go! 代码如下: package main import “fmt” func main() {  fmt.Printf(“Hello, world or 你好,...

    go-googletrans :(非官方)Googletrans:免费和无限的Golang Google翻译API。 完全免费翻译

    谷歌翻译 这是 googletrans的Golang版本。 Googletrans是一个免费且不受限制的Golang库,它实现了Google Translate ... Translate ( "你好,世界!" , "auto" , "en" ) if err != nil { panic ( err ) } fmt . P

    十三岁,你好!作文.doc

    十三岁,你好!作文.doc

Global site tag (gtag.js) - Google Analytics