这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天。
本篇笔记主要包含三个方面:
- 环境搭建及案例导入;
- 基础知识学习(上)。
一、Windows中环境搭建及案例导入
1.安装go语言:
访问 go下载地址 ,点击 Download ,进入下载界面后,选择对应平台的安装包安装即可。此处我选择的是Windows版本的。
(注意不要忘了将更改安装路径)
2.安装Golang:
访问 Golang下载地址,下载后按照提示安装,将安装路径更改,在以下页面勾选三个选项。一直next直至安装完成。不同版本此页面可能会有不同,按照需求勾选即可。
3.案例导入:
(1)此处需要提前下载安装git:git下载地址。
(2)在新建项目前,我提前准备了一个空文件GolandProjects夹作为以后Go项目的存放处。在GolandProjects文件夹中新建ProjectTest作为第一个项目。
- 进入ProjectTest文件,右键选择Git Bash Here。
- 配置本地仓库的账号邮箱git,双引号内为自己的github账号信息。
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
- 使用ssh登陆。查看自己电脑C:\Users\Administrator 目录下是否有 .ssh 文件夹。如果没有则需要以下命令生成。
$ ssh-keygen -t rsa -C "youremail@example.com"
然后登入github账号,在个人头像处点击settings。
新建一个SSH,Title可以自己起。
在C:\Users\Administrator.ssh中用记事本打开id_rsa.pub,复制其中全部内容到KEY中。最后点击Add SSH Key即添加成功。
- 克隆github上的项目在Code处复制项目链接,有三种可以选择。
git clone 项目地址
使用Golang打开项目。
运行成功证明配置正确。
二、基础知识学习
1.hello world
-
import ("fmt")为导入标准库的包。fmt作用为向屏幕输入输出字符串,格式化字符串。一次导入多个包语法要求必须加圆括号.否则报错。
-
Go语言不需要在语句或者声明的末尾添加分号,除非一行上有多条语句。编译器会主动把特定符号后的换行符转换为分号, 因此换行符添加的位置会影响Go代码的正确解析。特定符号有:标识符、整数、浮点数、虚数、字符或字符串文字、关键字 break 、 continue 、 fallthrough 或 return 、运算符和分隔符 ++ 、 -- 、 ) 、 ] 或 } 。
举个例子, 函数的左括号 { 必须和 func 函数声明在同一行上,且位于末尾,不能独占一行,而在表达式 x + y 中,可在 + 后换行,不能在 + 前换行。以+结尾的话不会被插入分号分隔符,但是以x结尾的话则会被分号分隔符,从而导致编译错误。
2.变量
(1)var a = "initial"自动推导变量类型;
(2)f := float32(e);
= 和 := 的区别
= 使用必须使用var声明
:= 是声明并赋值,不需要var关键字
(3)常量声明只需要将var改为const,常量无确定类型,会自动根据上下文确定类型。
3.if else
- if 后无括号,判断语句后必须接大括号。
- if后有条件语句则用分号隔开。
4.循环
- 只存在for循环,任一条件语句都可以省略。
- for循环的条件语句用分号隔开,条件语句不加括号。
5.switch分支
执行完一个分支后会自动跳出分支。可以使用任意的变量类型,甚至可以取代if else语句。
6.数组
数组长度固定比较有局限性。
var a [5]int //声明
a[4] = 100 //赋值
fmt.Println("get:", a[2]) //读取
7.切片
切片长度可变,追加元素时要将其赋值给原数组。同时可以切片取出元素。
s := make([]string, 3)
s[0] = "a"
s = append(s, "d")
c := make([]string, len(s))
copy(c, s)
fmt.Println(c) // [a b c d e f]
fmt.Println(s[2:5]) // [c d e]
good := []string{"g", "o", "o", "d"}
fmt.Println(good) // [g o o d]
8.map
第一个数据类型为key的,第二个为value的。
m := make(map[string]int)
m["one"] = 1
m["two"] = 2
9.range
快速遍历,对于数组返回的第一个值是索引,第二个值是位置上的值;对于map返回的第一个值是key,第二个值是value。
nums := []int{2, 3, 4}
sum := 0
for i, num := range nums {
sum += num
if num == 2 {
fmt.Println("index:", i, "num:", num) // index: 0 num: 2
}
}
fmt.Println(sum) // 9
10.函数
数据类型后置,支持返回多个值,第一个值返回结果,第二个值返回错误信息。
func exists(m map[string]string, k string) (v string, ok bool) {
v, ok = m[k]
return v, ok
}