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程序搭建开发环 ...
随机推荐
- Java学习笔记-基础语法Ⅵ-异常
异常 对于异常,JVM默认处理方案为:把异常名称.异常原因以及异常出现的位置等信息输出在控制台,并且程序停止执行 异常处理方式一:try ... catch public class Demo { p ...
- 拯救一切强迫症 - 读《编写可维护的 JavaScript》(一)
拯救一切强迫症 - 读<编写可维护的 JavaScript>(一) 本文写于 2020 年 4 月 24 日 我在小学的时候就有接触过编程,所以读大一的时候 C 语言还算是轻车熟路.自然会 ...
- Elasticsearch高级之-集群搭建,数据分片
目录 Elasticsearch高级之-集群搭建,数据分片 一 广播方式 二 单播方式 三 选取主节点 四 什么是脑裂 五 错误识别 Elasticsearch高级之-集群搭建,数据分片 es使用两种 ...
- Vue的computed和watch的使用和区别
一.computed: 模板内表达式非常便利,可用于简单计算,当模板内放入太多的逻辑时,模板会过重且难以维护:可以使用computed替代 计算属性是基于它们的响应式依赖进行缓存的,当依赖的响应式数据 ...
- 好客租房39-react组件基础总结
1组件的两种创建方式:函数组件和类组件 2无状态函数组件 负责静态结构展示 3有状态组件 负责更新ui 让页面动起来 4绑定事件注意this指向问题 5使用受控组件创建表单 6完全利用js语言的能够力 ...
- ML第7周学习小结
本周收获 总结一下本周学习内容: 1.学习了<深入浅出Pandas>的第六章:Pandas分组聚合 6.4 聚合统计 6.5 数据分箱 6.6 分组可视化 博客: pandas:聚合统计. ...
- vue面试总结-2022
1.vue生命周期及各周期得特点 beforCreate 特点: 初始化实例,不能使用data和methods.ref 示例 beforeCreate: function () { console.g ...
- 题解0014:信奥一本通1472——The XOR Largest Pair(字典树)
题目链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1472 题目描述:在给定的 N 个整数中选出两个进行异或运算,求得到的结果最大是多少. 看到这 ...
- 毕设(1)——机械臂DH建模
目录 毕设(1)--机械臂DH建模 改进DH参数表 Matlab代码验证 毕设中用到了很多代码,其中一部分我通过看书和看论文学习并实现的代码,会通过Gitee仓库分享出来,这些代码仅用于学习使用,祝各 ...
- LVS+keepalived简单搭建(二)
在LVS1的基础上进行搭建 https://www.cnblogs.com/hikoukay/p/12860476.html keeplived主机 用node01,node04两台 先清掉原先nod ...