Go语言基础一:环境配置与基础语法
配置开发环境
开始使用Go,首先需要一个完善的开发环境。
下载并安装Go
安装包的下载地址为:https://golang.org/dl/
go语言中文社区下载:https://studygolang.com/dl
Windows系统安装后,可以在命令行输入 go命令来查看是否正确安装,并使用go version来查看安装版本。

hello.go
package main
import (
"fmt"
)
func main() {
var x string = "Hello World!! By Go"
fmt.Println(x)
}
使用go命令go run hello.go运行上述代码,输出结果如下:
PS E:\WorkSpace\go> go run .\hello.go
Hello World!! By Go
Go语言代码结构
Go语言的基础组成部分有:包声明、引入包、函数、变量、语句、注释。
上述代码的第一行
packaga main是包声明,必须在源文件中的非注释第一行指明这个文件属于哪个包。关于包名:
- go的package不局限一个文件,可以由多个文件组成
- go不要求package的和所在目录名相同,但最好是保持相同,否则容易引起歧义。
- 每个子目录中只能存在一个package,否则编译报错
- 每一个package下的多个文件中只能有一个
main()函数 - 每个go程序都必须包含一个package main,且package main必须包含一个func main
下一行代码中
import "fmt"是包的引入,这里导入Go程序所需要的fmt包,fmt包实现了格式化IO(输入/输出)的函数单行导入
import "pkg1"
import "pkg2"
多行导入
import(
"pkg1"
"pkg2"
)
import "fmt" //最常用的导包方式
import "./pkg1" //导入同一目录下pkg1包中的内容
import f "fmt" //导入fmt,并重命名为f;可以用于区分同名包,或简化较长包名
import . "fmt" //导入fmt,启用别名".",这样可以直接引用包把内容,不需要再添加fmt。例如,fmt.Println() --写为--> Printlf()
import _ "pkg1" //匿名导入包,只导入包结构以及init()函数,但不使用包内类型和数值。且在import时就执行pkg1包的init()函数。
下一行的
func main()是程序开始执行的函数。main函数是每一个可执行程序必须包含的,一般来说都是会在启动后第一个执行的函数(如果有init()函数则会先执行该函数)下一行的
//这是一个注释为注释内容,在程序执行时会忽略。下一行代码声明了一个string型变量。
下一行
fmt.Println(),这是一条代码语句,会将字符串输出到带控制台,并自动换行。
Go语言基础语法
Go行分隔符
在Go程序中,一行代码代表一行语句,每个语句也不需要以;结尾;如果将多条语句写在同一行,则必须使用;人为区分,但是一般也不推荐这种做法。
注释
注释不会被编译,每一个包都应该有一个注释。
//单行注释是最常见的注释形式,可以在任何地方的开头使用单行注释
/*
多行注释或块注释
*/
关键字
下面列举了 Go 代码中会使用到的 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 语言还有 36 个预定义标识符:
| append | bool | byte | cap | close | complex | complex64 | complex128 | uint16 |
|---|---|---|---|---|---|---|---|---|
| copy | false | float32 | float64 | imag | int | int8 | int16 | uint32 |
| int32 | int64 | iota | len | make | new | nil | panic | uint64 |
| println | real | recover | string | true | uint | uint8 | uintptr |
标识符
标识符是用来命名变量、类型等程序实体。与其他变成语言一样,一个标识应符由一个或多个字母A~Z和a~z数字0~9、下划线_组成。标识符的第一个字符不能为数字。标识符不能为关键字。
name age user_name user_123 a _user 这些都是有效的标识符
变量
变量声明
变量的声明方式有两种,并且对Go语言,变量的声明要把变量类型放在变量名之后的。例如:
//Go语言的变量声明必须用空格隔开
//方式一
var x string = "hello world"
var z int = 12
//方式二
x := string("hello world")
z := int(12)
但是Go语言也可以不指定数据类型,系统将会根据赋值自动判断数据类型。例如:
var x = "hello world"
z := int(12)
在上述第一个示例中,使用关键字var定义名为x的变量hell world。Go会隐式推断x为字符串。在第二个示例中,使用:=运算符定义一个名为z的新变量,并赋值为整数12。
注意,当你没有声明变量类型时,你就必须接受系统自动推断的类型。另外当你的便令已经被声明之后,是不可以使用:=再赋值的,想要修改已经赋值变量的值需要用=。最后:=不可以用来给全局变量赋值
多变量的声明
//类型相同多个变量,非全局变量
var name1,name2,name3 type
name1,name2,name3 = v1,v2,v3
//也可以不指定变量类型
var name1,name2,name3 = v1,v2,v3
//因式分解形关键字的写法一般用于声明全局变量
var (
name type1 = value1
age type2 = value2
)
变量作用域
Go使用大写字母确定作用域,以大写字母开头的变量可以在包外部导出并访问(类似于java中的public),而小写字母开头的变量都是私有的,只能活在包内部访问。
常量
相同的常量的定义也需要将类型放在标识符之后。常量的定义格式:
const 常量名 [type] = value
同样,对于常量你也可以省略类型[type],编译器会根据值推断其类型。例如:
//显式定义
const a string = "hello"
//隐式定义
const a = "hello"
Go语言基础一:环境配置与基础语法的更多相关文章
- [Android] 环境配置之基础开发环境(SDK/Android Studio)(转)
[Android] 环境配置之基础开发环境(SDK/Android Studio) 博客: blog.csdn.net/qiujuer 网站: www.qiujuer.net 开源库: Geniu ...
- go 语言开发1 环境配置和语言基础
Go 语言环境配置 windows 环境变量: 设置 GOROOT (安装路径),GOPATH(工程目录) Path 中加入 %GOROOT%/bin 和 %GOPATH%/bin mac 环境变量: ...
- Android 开发基础及环境配置
2011年买了第一部安卓操作系统的手机,当时势头正盛的HTC不可思议(incredible),当时的想法就是想学习下智能手机开发,但是由于各种原因,客观上是公司的项目太忙了,忙于项目管理.团队建设.客 ...
- Vue基础(环境配置、内部指令、全局API、选项、内置组件)
1.环境配置 安装VsCode 安装包管理工具:直接下载 NodeJS 进行安装即可,NodeJS自带 Npm 包管理工具,下载地址:https://nodejs.org/en/download/安装 ...
- 1.python环境配置 - python基础入门
工欲善其事必先利其器,python学习首先要做得就是配置python环境.配置环境只需要下载Pycharm 和 Anaconda两个安装包即可,请跟上我得步伐,一步一步操作. 重要的事情说三遍: 先安 ...
- Golang(go语言)开发环境配置
VSCode开发环境配置 目录 VSCode开发环境配置 先到VSCode官网去下载适合自己系统的VSCode安装软件 演示在WIndows下 安装使用 演示在Linux(Ubuntu/centos) ...
- 带你学够浪:Go语言基础系列-环境配置和 Hello world
文章每周持续更新,原创不易,「三连」让更多人看到是对我最大的肯定.可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) 前面几周陆陆续续写了一些后端技术的文章,包括数据库.微 ...
- spring boot 基础 多环境配置
对于多环境的配置,各种项目构建工具的思路基本上一致,都是通过配置多份不同环境的配置文件来区分. 1. 首先我们先创建不同环境下的属性文件,截图如下: application.properties 是 ...
- Android Studio1.4.x JNI开发基础-基本环境配置
从Eclipse时代到Android Studio普及,开发工具越来越好用.早些时候还需要安装Cygwin工具,从Android Studio1.3以后,在Android 环境开发JNI程序搭建开发环 ...
随机推荐
- 【面试普通人VS高手系列】Spring中事务的传播行为有哪些?
一个工作了2年的粉丝,私信了一个比较简单的问题. 说: "Spring中事务的传播行为有哪些?" 他说他能记得一些,但是在项目中基本上不需要配置,所以一下就忘记了. 结果导致面试被 ...
- Linux中文件/文件系统的压缩、打包和备份总结(基于rhel7)
文件/文件系统的压缩.打包 Linux有哪些压缩工具可供选择 按压缩比:xz>bzip2>gzip,按压缩时长:gzip>bzip2>xz,另外还有zip可以选择. gzip只 ...
- 使用VUE+SpringBoot+EasyExcel 整合导入导出数据
使用VUE+SpringBoot+EasyExcel 整合导入导出数据 创建一个普通的maven项目即可 项目目录结构 1 前端 存放在resources/static 下 index.html &l ...
- Kubernetes client-go 源码分析 - ListWatcher
概述ListWatch 对象的创建GetterListWatchList() & Watch() 概述 源码版本信息 Project: kubernetes Branch: master La ...
- Eureka入门
一个Eureka中分为eureka server和eureka client.其中eureka server是作为服务的注册与发现中心.eureka client既可以作为服务的生产者,又可以作为服务 ...
- 【Spring】AOP实现原理(一):AOP基础知识
AOP相关概念 在学习AOP实现原理之前,先了解下AOP相关基础知识. AOP面向切面编程,它可以通过预编译方式或者基于动态代理对我们编写的代码进行拦截(也叫增强处理),在方法执行前后可以做一些操作, ...
- vue大型电商项目尚品汇(后台篇)day04
昨天太晚就没来得及更新,今天是spu管理界面,这个界面一共有三个界面需要切换,完成了两个界面,而且今天的难度在于最后两个章节,富有一定的逻辑性,当然中间也有很多需要注意的,比如ElementUI的照片 ...
- 15.LNMP架构的源码编译
LNMP架构的源码编译 目录 LNMP架构的源码编译 编译安装 Nginx 服务 1.关闭防火墙 2.安装相关依赖包 3.创建运行用户 4.解压软件包及配置编译安装 5.优化路径 6.将Nginx 加 ...
- Tensor的向量化
向量化操作是指可以在同一时间进行批量地并行计算,例如矩阵运算,以达到更好效率的一种方式. 尽量使用向量化直接对Tensor操作,避免低效率的for循环对元素逐个操作.
- 基于bat脚本的前端发布流程的优化
背景介绍 前面在基于bat脚本的前端发布流程设计与实现中,我已经介绍了设计与实现,这一篇主要是针对其的一个优化折腾(分两步走,第一步先搞出来,第二步再想着怎么去优化它),我主要做了以下几件事. &qu ...