配置开发环境

开始使用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. vue ui 创建vue项目 没反应的解决办法 2021

    1.升级vue 脚手架 即可   2.再  vue ui  创建项目 cnpm i -g @vue/cli

  2. Fail2ban 配置详解 配置说明

    fail2ban的配置主要由基础配置(fail2ban.conf)和监禁配置(jail.conf)两部分组成. fail2ban的配置采用标签块"[块名]"和键值"key ...

  3. vuex+Es6语法补充-Promise

    Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式,采用 集中式存储管理 单页面的状态管理/多页面状态管理 使用步骤: // 1.导入 import Vuex from 'vuex' // ...

  4. SAM[详细~bushi]

    基础性质概念 后缀自动机:S的SAM是个DAG,每个节点叫状态,每条带字符ch边表示+ch转移,从开始节点往下,任何一条路径都会对应一个S的子串. 不过为什么要叫"后缀"自动机呢? ...

  5. 【JSOI2016】最佳团体

    思路:二分答案+动态规划(结合dfs序) 类型:选/不选:最大比值 代码: #include<stdio.h> #include<bits/stdc++.h> using na ...

  6. UniqueMergeTree:支持实时更新删除的 ClickHouse 表引擎

    UniqueMergeTree 开发的业务背景 首先,我们看一下哪些场景需要用到实时更新. 我们总结了三类场景: 第一类是业务需要对它的交易类数据进行实时分析,需要把数据流同步到 ClickHouse ...

  7. 在linux上开启酸酸乳,未完待续

    在服务器调试深度学习环境的时候总需要下载conda的包,一直以来都觉得是因为国内访问慢,于是想在服务器上开 ,或者ssr.由于过去用ssr多一些,于是想了解ssr on linux. 1.首先win1 ...

  8. 工具分享:清理 Markdown 中没有引用的图片

    前言: 之前,我写笔记的工具一直都是 notion,而且没有写博客的习惯.但是一是由于 notion 的服务器在国外,有时候很不稳定:二是由于 notion 的分享很不方便,把笔记分享给别人点开链接之 ...

  9. 看看CabloyJS是如何实现编辑页面脏标记的

    应用场景 我们在使用Word.Excel时,当修改了内容之后在标题栏会显示脏标记,从而可以明确的告知用户内容有变动.此外,如果在没有保存的情况下关闭窗口,系统会弹出提示框,让用户选择是否放弃修改 那么 ...

  10. 2021.10.19 CSP 模拟赛 总结

    T1 题意: \(n\) 个人摘苹果,跳起高度为 \(a_i\),苹果高度为 \(h_i\),高度小的先摘,摘了就没了 直接排序+双指针,复杂度 \(O(n+m)\) T2 题意:要轰炸一个有向图的所 ...