GO语言特点:
- 高性能、高并发 (不需要寻找第三方库来进行开发应用,只需使用标准库)
- 语法简单,学习曲线平缓 (类似于c语言,并对其进行简化)
- 丰富的标准库 (稳定性,兼容性有保障 | 迭代快)
- 完善的工具链 (编译,代码格式化,代码补充提示等)
- 静态链接 (只需拷贝编译后的唯一一个可执行文件即可运行 | 体积小)
- 快速编译 (远远快于c++)
- 跨平台 (Mac,Windows,Linux,Android,Ios,路由器等 | 交叉编译)
- 垃圾回收 (无需考虑内存释放)
- 各公司广泛应用 (字节跳动,腾讯,美团,滴滴,谷歌,B站等)
GO环境配置
参考csdn上的环境配置教学
链接: (16条消息) GO语言环境配置_微凉.@_@的博客-CSDN博客
笔者使用的是vscode进行开发
如果觉得配置环境过于麻烦,也可以考虑使用线上编译器
GO基础语法
package main 为程序的入口包,入口文件,每个程序必备
import{ \\\ } 这里用来导入标准库 如"fmt"为输入输出库 类似c++中的#include<iostream>
func main(){} 这里为主函数,类似于c++中的int main(){}
func main(){ fmt.Println("hello,world"} 即可在屏幕上输出hello,world
变量的声明
go
func main() {
var a int = 1
var b = "abc"
var c = true
d := "1234"
fmt.Println(a, b, c, d) //1 abc true 1234
}
结构体声明
go
type point struct{
x,y int
}
var a int = 1 与c++语法不同,变量的类型如int是放在后面 也可以不声明变量类型,则会自动适配类型
d := "1234" 也可以像这样,直接使用:=也可以声明变量
输出时除了fmt.Println(变量名) 外,还可以使用fmt.Printf("%v",变量名) 所有变量均可以使用%v输出, 结构体具体的内容则可以使用%+v或者%#v来输出
go
func main() {
s := point{1, 2}
fmt.Printf("%+v\n", s)
fmt.Printf("%#v\n", s)
}
分别输出{x:1 y:2}和main.point{x:1, y:2}
if else
go
if 7%2 == 1 {
fmt.Println("yes")
} else {
fmt.Println("no")
}
与c++类似,只是if后面不需要加括号()
循环(for循环)
Go语言只有一种循环--for循环
go
for j := 1; j < 6; j++ {
fmt.Println(j)
}
与c++类似,还是不加括号()
switch分支结构
go
func main() {
a := 1
switch a {
case 1:
fmt.Println("1")
case 2:
fmt.Println("2")
default:
fmt.Println("out")
}
}
switch后面跟了变量名的,case 后面判断的就是该变量是否等于这个值
go
func main() {
a := 1
switch {
case a < 0:
fmt.Println("<0")
case a < 1:
fmt.Println(">=0&&<1")
default:
fmt.Println(">=1")
}
}
switch后面没有跟变量名的,case就相当于if语句
注意: 与c++不同点在于,go的switch中不需要在每个case里面加break,go会自动break掉
数组
go
func main() {
var a [5]int
for i := 0; i < 5; i++ {
a[i] = i
}
fmt.Println(a)
b := [5]int{1, 2, 3, 4, 5}
fmt.Println(b)
}
二维数组也是类似的,与c++差别不大,注意命名时的语法就行,数组实际的使用次数并不多
后面的语法基础知识会放在下一篇笔记来写
总结:
Go语言写起来会明显感觉比c++更加简短(每一个语句后面不需要加分号了),并且对于变量的声明也显得更加方便,无论是什么类型的变量都可以统一用:=来声明,输出时也很方便,可以直接使用fmt.Println(a)后面直接加变量名就可以完整输出了,数组的输出也是这样,不用像c++一样要用一个循环才能输出数组的所有元素,使用fmt.Printf("%v",a)中%v也时可以输出任意类型的,这些都比c语言中的printf()更加方便快捷,也更方便入手,入手Go语言的时候就是要格外注意它的命名语法和c++不同,相对来说还是很好学习的