配置开发环境

开始使用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. SpringBoot接入两套kafka集群

    引入依赖 compile 'org.springframework.kafka:spring-kafka' 第一套kafka配置 package myapp.kafka; import lombok. ...

  2. 跨云平台与物理专线使用Vxlan实现两地二层互通,并使用ospf与bgp做底层链路主备

    Vxlan基础,已掌握可略过 VXLAN网络架构 VXLAN是NVO3中的一种网络虚拟化技术,通过将原主机发出的数据包封装在UDP中,并使用物理网络的IP.MAC作为外层头进行封装,然后在IP网络上传 ...

  3. spring boot 统一接口异常返回值

    创建业务 Exception 一般在实际项目中,推荐创建自己的 Exception 类型,这样在后期会更容易处理,也比较方便统一,否则,可能每个人都抛出自己喜欢的异常类型,而造成代码混乱 Servic ...

  4. 130_传析阅管理系统accdb64位版本

    博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 几年前笔者针对家居门店的进销存.人员管理.工资管理.任务系统.门店经营盈亏管理.销售分析.考勤请假等息息相关的业务基于Ac ...

  5. 深度学习可视化工具--tensorboard的使用

    tensorboard的使用 官方文档 # writer.add_scalar() # 添加标量 """ Args: tag (string): Data identif ...

  6. C++:最大子数组差

    最大子数组差 内存限制:128 MiB        时间限制:1000 ms 题目描述: 给定一个整数数组,找出两个不重叠的子数组A和B,使两个子数组和的差的绝对值|SUM(A) - SUM(B) ...

  7. 从单例谈double-check必要性,多种单例各取所需

    theme: fancy 前言 前面铺掉了那么多都是在讲原则,讲图例.很多同学可能都觉得和设计模式不是很搭边.虽说设计模式也是理论的东西,但是设计原则可能对我们理解而言更加的抽象.不过好在原则东西不是 ...

  8. LoRa和NB-IoT会长期共存吗?

    物联网有很多无线通信技术,主要是Zigbee,WiFi,蓝牙和Z-wave等短距离通信技术,另一种是LPWAN.LPWAN的两种类型之一在未授权的频谱上工作.另一种是2G/3G/4G蜂窝通信技术,该技 ...

  9. AcWing-1022

    题解借鉴两位大佬的解析 墨染空 && 野生铅笔 本题是一道 01背包 的扩展题 -- 二维费用01背包问题 把 野生宝可梦 看做物品,则捕捉他需要的 精灵球 个数就是第一费用,战斗皮神 ...

  10. 开发工具-Base64编码/解码

    更新日志 2022年6月10日 新增链接. https://toolb.cn/base64