配置开发环境

开始使用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语言的基础组成部分有:包声明、引入包、函数、变量、语句、注释。

  1. 上述代码的第一行packaga main包声明,必须在源文件中的非注释第一行指明这个文件属于哪个包。

    关于包名:

    • go的package不局限一个文件,可以由多个文件组成
    • go不要求package的和所在目录名相同,但最好是保持相同,否则容易引起歧义。
    • 每个子目录中只能存在一个package,否则编译报错
    • 每一个package下的多个文件中只能有一个main()函数
    • 每个go程序都必须包含一个package main,且package main必须包含一个func main
  2. 下一行代码中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()函数。
  3. 下一行的func main()是程序开始执行的函数。main函数是每一个可执行程序必须包含的,一般来说都是会在启动后第一个执行的函数(如果有init()函数则会先执行该函数)

  4. 下一行的//这是一个注释注释内容,在程序执行时会忽略。

  5. 下一行代码声明了一个string型变量

  6. 下一行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
print 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语言基础一:环境配置与基础语法的更多相关文章

  1. [Android] 环境配置之基础开发环境(SDK/Android Studio)(转)

    [Android] 环境配置之基础开发环境(SDK/Android Studio)   博客: blog.csdn.net/qiujuer 网站: www.qiujuer.net 开源库: Geniu ...

  2. go 语言开发1 环境配置和语言基础

    Go 语言环境配置 windows 环境变量: 设置 GOROOT (安装路径),GOPATH(工程目录) Path 中加入 %GOROOT%/bin 和 %GOPATH%/bin mac 环境变量: ...

  3. Android 开发基础及环境配置

    2011年买了第一部安卓操作系统的手机,当时势头正盛的HTC不可思议(incredible),当时的想法就是想学习下智能手机开发,但是由于各种原因,客观上是公司的项目太忙了,忙于项目管理.团队建设.客 ...

  4. Vue基础(环境配置、内部指令、全局API、选项、内置组件)

    1.环境配置 安装VsCode 安装包管理工具:直接下载 NodeJS 进行安装即可,NodeJS自带 Npm 包管理工具,下载地址:https://nodejs.org/en/download/安装 ...

  5. 1.python环境配置 - python基础入门

    工欲善其事必先利其器,python学习首先要做得就是配置python环境.配置环境只需要下载Pycharm 和 Anaconda两个安装包即可,请跟上我得步伐,一步一步操作. 重要的事情说三遍: 先安 ...

  6. Golang(go语言)开发环境配置

    VSCode开发环境配置 目录 VSCode开发环境配置 先到VSCode官网去下载适合自己系统的VSCode安装软件 演示在WIndows下 安装使用 演示在Linux(Ubuntu/centos) ...

  7. 带你学够浪:Go语言基础系列-环境配置和 Hello world

    文章每周持续更新,原创不易,「三连」让更多人看到是对我最大的肯定.可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) 前面几周陆陆续续写了一些后端技术的文章,包括数据库.微 ...

  8. spring boot 基础 多环境配置

    对于多环境的配置,各种项目构建工具的思路基本上一致,都是通过配置多份不同环境的配置文件来区分. 1. 首先我们先创建不同环境下的属性文件,截图如下: application.properties  是 ...

  9. Android Studio1.4.x JNI开发基础-基本环境配置

    从Eclipse时代到Android Studio普及,开发工具越来越好用.早些时候还需要安装Cygwin工具,从Android Studio1.3以后,在Android 环境开发JNI程序搭建开发环 ...

随机推荐

  1. 这 BUG,绝了

    上周只上了三天班,但我也丝毫不敢懈怠,BUG 更是一个也没少写. 看着满屏幕的 ERROR,我陷入沉思.为什么我写的代如此烂,无法像大牛们写的那般优雅? 越想越自卑,越想越抑郁.我觉得这样不行,一定得 ...

  2. 基于C++11的线程池实现

    1.线程池 1.1 线程池是什么? 一种线程管理方式. 1.2 为什么用线程池? 线程的创建和销毁都需要消耗系统开销,当线程数量过多,系统开销过大,就会影响缓存局部性和整体性能.而线程池能够在充分利用 ...

  3. docker 安装和错误解决方案

    安装 x64 架构 install docker switch mirror docker desktop docker run -d -p 80:80 docker/getting-started ...

  4. 【算法】归并排序(Merge Sort)(五)

    归并排序(Merge Sort) 归并排序是建立在归并操作上的一种有效的排序算法.该算法是采用分治法(Divide and Conquer)的一个非常典型的应用.将已有序的子序列合并,得到完全有序的序 ...

  5. 110. Balanced Binary Tree - LeetCode

    Question 110. Balanced Binary Tree Solution 题目大意:判断一个二叉树是不是平衡二叉树 思路:定义个boolean来记录每个子节点是否平衡 Java实现: p ...

  6. django框架11

    内容概要 用户登录之后跳转到用户登录之前想要访问的页面 django操作cookie补充 django操作session django操作session补充 CBV添加装饰器 django中间件 自定 ...

  7. Spring cloud gateway 如何在路由时进行负载均衡

    本文为博主原创,转载请注明出处: 1.spring cloud gateway 配置路由 在网关模块的配置文件中配置路由: spring: cloud: gateway: routes: - id: ...

  8. Kali信息收集

    前言 渗透测试最重要的阶段之一就是信息收集,需要收集关于目标主机的基本细腻些.渗透测试人员得到的信息越多,渗透测试成功的概率也就越高. 一.枚举服务 1.1 DNS枚举工具DNSenum DNSenu ...

  9. RPA应用场景-产品主数据同步

    场景概述 产品主数据同步 所涉系统名称 产品管理系统.SAP系统 人工操作(时间/次) 35分钟 所涉人工数量 3 操作频率 不定时 场景流程1.登录收购品牌产品管理系统 2.根据时间.产品分类等选择 ...

  10. 数仓的字符截取三胞胎:substrb、substr、substring

    摘要:下面就来给大家介绍这三个函数在字符截取时的一些用法与区别. 本文分享自华为云社区<GaussDB(DWS)中的字符截取三胞胎>,作者:我站在北方的天空下 . 在GaussDB(DWS ...