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程序搭建开发环 ...
随机推荐
- python爬取豆瓣电影Top250(附完整源代码)
初学爬虫,学习一下三方库的使用以及简单静态网页的分析.就跟着视频写了一个爬取豆瓣Top250排行榜的爬虫. 网页分析 我个人感觉写爬虫最重要的就是分析网页,找到网页的规律,找到自己需要内容所在的地方, ...
- dotnet 6 在 Win7 系统证书链错误导致 HttpWebRequest 内存泄露
本文记录我将应用迁移到 dotnet 6 之后,在 Win7 系统上,因为使用 HttpWebRequest 访问一个本地服务,此本地服务开启 https 且证书链在此 Win7 系统上错误,导致应用 ...
- Docker将镜像文件发布到私服库
上一篇已经介绍如何将镜像发布到阿里云:https://www.cnblogs.com/sportsky/p/16246394.html 一.创建新镜像文件 1.创建容器并在容器内创建文件 在根目录下创 ...
- web框架的本质、MVC框架MTV框架的介绍
1.web框架的本质 所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响应,按照http协议的请求协议发送请 ...
- MinGW 和 TDM 的问题
目前遇到的一个小问题就是批量声明时的初始化. mingw gcc 9.2:不支持int a,b,c=5; 所得数为a=0 b=0 c=5. 而在TDM gcc 5.1中,可以同时赋值. 第二个问题,T ...
- 好客租房7-React脚手架的使用
3.3在脚手架中使用React //第一步导入react import React from "React" import ReactDOM from "react-do ...
- AJAX——POST请求
POST.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- 【原创】快速理解Unicode和utf-8的本质
字符串编码 基本概念 在代码中处理,为了字节统一,都统一使用Unicode 核心:在pyhton中s.encode("utf-8")中的变量实例s必须是已经是Unicode格式,否 ...
- 【Openxml】颜色变化属性计算
Openxml的颜色变化属性 目前Openxml存在颜色变化属性如下: 参数 说明 Hue 色调(色相) HueModulate 色调调制,百分比 HueOffset 色调偏移量,角度值 Satura ...
- 技术分享 | 想做App测试就一定要了解的App结构
本文节选自霍格沃兹测试开发学社内部教材 app 的结构包含了 APK 结构和 app 页面结构两个部分 APK结构 APK 是 Android Package 的缩写,其实就是 Android 的安装 ...