前言:
整理一下学习 Go 语言的笔记,作为一名老程序,学习一名新的开发语言自然不需要像小白那样从 HelloWorld 看起。
简单整理一下 Go 的一些差异处,希望对大家学习 go 有点帮助,不正确的地方还请指教!
一、环境搭建:
博客园很多教程,自行解决,推荐使用 VS Code 绿灯 + 插件的方式,简单粗暴好用
二、第一课笔记整理:
基础语法:
// --------------------------------------- 变量声明var [名称] [类型]var name string// 自动推导类型[名称] := [值]name := ""// 类型转换str := "666"var i = 0i = (int)str
// --------------------------------------- range 迭代器
str := "abc"for i, data := range str { // data 可省略 fmt.Println(i, data)}
// --------------------------------------- 函数定义
// 函数名首字母小写即为 private,大写即为 publicfunc [函数名](形参) (返回值) { // 方法体 return 参数1, 参数2}
// 不定参数类型(切片)func [函数名](args ...string)(返回值) { // ....}// 匿名变量num1, _ := Func()
// --------------------------------------- 回调函数(多态)
// --------------------------------------- 匿名函数与闭包
func main() { a := 10 f1 := func() { // 闭包是以引用的方式捕获外部变量 // print(a) } f1() // 给一个函数类型起别名 type FuncType func() var f2 FuncType f2 = f1 f2() // 定义匿名函数,同时调用 func() { // .. }() // 后面的()代表调用此匿名函数 // 带参数同理}
// --------------------------------------- 闭包的特点(装逼用法)
// --------------------------------------- defer 关键字作用(延缓调用,类似析构函数)
方法体类,执行结束后执行,常用一些关闭连接、关闭 IO 等操作注意:1、多个 defer 情况下,是先进后出的顺序2、defer 可以用与匿名函数的调用,如:defer func () { ... }
// --------------------------------------- 工程管理
1、分文件编程(多个源文件)2、设置 GOPATH 环境变量3、同目录必须包名一致4、go env 查看相关环境路径5、同一目录,直接调用文件函数即可,无需包名// 包引用import ( // 默认不调用 init 方法 _"fmt")
// --------------------------------------- 工程管理
if 变量名:a, a < 10 { // ...}