你好,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语言程序 #### 知识点概览 本文旨在详细介绍如何使用Go语言编写一个简单的“Hello, World”程序,并解析程序中的每一行代码的作用,帮助初学者理解Go语言的基本语法和概念。 ...
Go语言,又称Golang,是由Google开发的一种静态类型的、编译型的、并发型的、垃圾回收的、C风格的编程语言。它以其简洁的语法、高效的性能和强大的并发支持而受到开发者的喜爱,尤其适合构建分布式系统和网络服务。 ...
在IT行业中,Go语言,又称为Golang,是由Google开发的一种静态类型的、编译型的、并发型且具有垃圾回收功能的编程语言。它旨在提高编程效率,简化系统编程,并支持大规模并发。本文将详细讲解如何搭建Go语言的开发...
在IT行业中,Go语言,又称为Golang,是由Google公司于2009年推出的开源编程语言,设计目的是提高开发者的生产力和代码的可维护性。Go语言以其简洁的语法、高效的性能以及内置的并发支持而受到广大开发者的喜爱。在...
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的...
在IT行业中,Go语言,又称为Golang,是由Google开发的一种静态类型的、编译型的、并发型且具有垃圾回收功能的编程语言。它旨在提高编程效率,简化系统编程,并支持大规模网络服务的开发。本教程将围绕"GO语言Windows...
在Golang中,`Go-geopattern`是一个开源库,它允许开发者从任何字符串生成美观的几何图案,这些图案可以用于网站背景、验证码、艺术作品等。这个库的灵感来源于JavaScript的`GeoPattern`库,但在Golang中提供了更...
在本文中,我们将深入探讨Go(也称为Golang)编程语言的基础知识,通过一组示例代码来引导初学者进入Go语言的世界。Go是由Google开发的一种静态类型、编译型、并发型、垃圾回收的现代编程语言,设计时考虑了并发性能...
许多其他编程语言也有类似的功能,比如在Ruby中使用`puts`,在Go语言中使用`fmt.Println`,在Swift中使用`print`,等等。 通过以上代码示例,我们可以看出,虽然语言不同,但核心思想都是将字符串发送到标准输出...
Go语言,又称为Golang,是Google公司于2007年推出的开源编程语言,由罗伯特·格瑞史莫、罗布·派克和肯特·贝克等大神设计。Go语言以其简洁、高效的语法和强大的并发能力,在开发分布式系统、网络服务以及云计算应用...
在语言基础章节,作者从“你好,Go”开始,引导读者熟悉Go语言的基本语法,包括变量、常量、数据类型等。接着,深入讲解流程控制(如if语句、for循环、switch语句)和函数的使用。书中还涵盖了Go语言中的结构体...
### Go 语言中文入门指南知识点总结 #### 一、引言与目标读者 - **目标读者**:本书面向已经熟悉 C 或 C++ 的程序员,旨在介绍 Go 语言的基础知识。 - **非全面指南**:本书并非 Go 语言的全面指南,《语言规范》...
- **你好,Go**:介绍Go语言的基本概念,包括语法特点、运行环境及安装指南等。 - **Go基础**:涵盖Go语言的数据类型、变量、常量、运算符等内容,是学习Go的基础。 - **流程和函数**:讲解控制结构(如条件语句、...
Go-Sniper是一个专为Go语言开发者设计的轻量级Web框架,它旨在提供一个简洁、高效且易于使用的开发环境,以加速Go语言的应用程序开发过程。Go-Sniper的核心理念是保持代码的清晰性和可维护性,同时提供足够的功能来...
总的来说,`gounidecode`是Go语言中处理Unicode字符转换的一个强大工具,它简化了在ASCII环境中处理非ASCII字符的工作,对于那些需要处理多语言文本的Go开发者来说,这是一个非常实用的库。通过熟练掌握并应用`...
在IT行业中,Go语言(Golang)是一种广泛用于构建高效、可扩展的网络服务和工具的语言。本项目涉及的是一个Golang实现的串口服务测试,主要关注的是如何使用Go进行串口通信以及进行测试。串口通信是计算机通信的一种...
本教程将详细介绍如何在Windows操作系统上快速搭建Go语言的开发环境,以便进行高效的Go编程。 标题“一键安装window+go环境”指的是在Windows系统中简便快捷地安装Go语言运行环境和开发工具的过程。Go,也称为...
在IT行业中,Go语言,又被称为Golang,是由Google开发的一种静态类型的编程语言。Go语言的设计目标是提高开发效率,简化系统级编程和网络编程,同时保持代码简洁、高效和可读性强。在这个"你好"的例子中,我们可以...
你好世界这是一个示例存储库。 安装go get github.com/bluecodemonks/go-hello-world跑步$ go-hello-worldHello World卸载$ rm $GOPATH/bin/go-hello-world