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程序搭建开发环 ...
随机推荐
- 手脱UPX(3.91)
1.使用Detect It Easy进行查壳: 2.使用x32dbg打开该带壳程序,在选项->选项->异常中添加区间设置0~FFFFFFFF全忽略: 3.我们F9运行到程序入口处,看到了p ...
- navicat软件、 python操作MySQL
查询关键字之having过滤 having与where的功能是一模一样的 都是对数据进行筛选 where用在分组之前的筛选 havng用在分组之后的筛选 为了更好的区分 所以将where说成筛选 ha ...
- 关于win10安装wsl子系统Ubuntu图形界面的错误解决
解决了https://blog.csdn.net/weixin_30834783/article/details/102144314Xserver个人使用的是VcXsrv. 在WSL中配置环境变量DI ...
- 跨域问题及其解决方法(JSONP&CORS)
一.什么是跨域 当a.qq.com域名下的页⾯或脚本试图去请求b.qq.com域名下的资源时,就是典型的跨域行为.跨域的定义从受限范围可以分为两种,⼴义跨域和狭义跨域. (一)广义跨域 ⼴义跨域通常包 ...
- 【摸鱼神器】一次搞定 vue3的 路由 + 菜单 + tabs
做一个管理后台,首先要设置路由,然后配置菜单(有时候还需要导航),再来一个动态tabs,最后加上权限判断. 这个是不是有点繁琐?尤其是路由的设置和菜单的配置,是不是很雷同?那么能不能简单一点呢?如果可 ...
- 论文解读(GraphSMOTE)《GraphSMOTE: Imbalanced Node Classification on Graphs with Graph Neural Networks》
论文信息 论文标题:GraphSMOTE: Imbalanced Node Classification on Graphs with Graph Neural Networks论文作者:Tianxi ...
- 看看CabloyJS工作流引擎是如何实现Activiti边界事件的
CabloyJS内置工作流引擎的基本介绍 1. 由来 众所周知,NodeJS作为后端开发语言和运行环境,支持高并发.开发效率高,有口皆碑,但是大多用于数据CRUD管理.中间层聚合和中间层代理等工具场景 ...
- 分享一款自带工作流引擎的NodeJS全栈框架,接单快手、创业神器
CabloyJS是什么 CabloyJS是一款自带工作流引擎的Node.js全栈框架, 接单快手.创业神器, 基于koa + egg + vue + framework7 + mysql 在线演示 场 ...
- Halodoc使用 Apache Hudi 构建 Lakehouse的关键经验
Halodoc 数据工程已经从传统的数据平台 1.0 发展到使用 LakeHouse 架构的现代数据平台 2.0 的改造.在我们之前的博客中,我们提到了我们如何在 Halodoc 实施 Lakehou ...
- 将 Ubuntu 16.04 LTS 的 Unity 启动器移动到桌面底部命令
将 Ubuntu 16.04 LTS 的 Unity 启动器移动到桌面底部命令: gsettings set com.canonical.Unity.Launcher launcher-positio ...