闲聊两句
从事java后端开发8年多,期间也曾零星看过Go语言、Python、Erlang等等,但都未曾认真学习过,恰好公司最近项目需要,之前用Go开发的项目因为同事离职,暂未人来接手,所以老大就找到我和另外一个同事,希望我们俩尽快把Go学起来并把项目维护起,给了两个周的过渡期,说实话,时间真的挺紧的,但是问题不大,闲聊到此,赶紧学起来吧!
Go的优势
- 可直接编译成机器码
- 不依赖其他库
- 直接运行即可部署
静态类型语言:编译的时候检查出来影藏的大多数问题
语言层面的并发:1.天生的基因支持 2.充分的利用多核
强大的标准库: runtime系统调度机制,已经实现高效的垃圾回收机制,丰富的标准库
只有25个关键字,C语言简洁基因,内嵌C语法支持,面相对象特征(封装、集成、多态),跨平台
记录重点
import导包
-  导入不使用,会报错,需要注释掉,或者在导包前加”_” 例如: _“demo-go-middle/study” 
-  可以给导入的包起一个别名mylib2 “demo-go-middle/study1” 
-  也可以使用”.“ 的方式进行导包,这样在调用接口的时候,就不用加类名,如果两个方法同名且在不同的类中,那么不建议使用”.”的方式 
示例代码:
package main
import (
	mylib1 "demo-go-middle/study"
	. "emo-go-middle/study1"
)
func main() {
	mylib1.Lib1Test()
	Lib2Test()
}

init函数

iota 只能配合const()一起使用,iota只有在const进行累加效果
示例代码:
package main
import "fmt"
// 用const来定义枚举类型
const (
	// 可以在const()添加一个关键字 iota,每行的iota都会累加1,第一行的iota的默认值是0
	BEIJING   = 10 * iota // iota = 0
	SHANGHAI              // iota = 1
	CHONGQING             // iota = 2
)
const (
	a, b = iota + 1, iota + 2 // iota = 0, a = iota +1, b = iota +2, a = 1, b = 2
	c, d                      // iota = 1, c = iota +1, d = iota +2, c = 2, d = 3
	e, f                      // iota = 2, e = iota +1, f = iota +2, e = 3, f = 4
	g, h = iota * 2, iota * 3 // iota = 3, g = iota *2, h = iota *3, g = 6, h = 9
	i, k                      // iota = 4, i = iota *2, k = iota *3, i = 8, k = 12
)
func main() {
	// 用const定义常量,可以用来定义枚举类型
	const length int = 10
	fmt.Println("length =", length)
	fmt.Println("======================")
	fmt.Println("BEIJING =", BEIJING)
	fmt.Println("SHANGHAI =", SHANGHAI)
	fmt.Println("CHONGQING =", CHONGQING)
	fmt.Println("======================")
	fmt.Println("a =", a, ",b=", b)
	fmt.Println("c =", c, ",d=", d)
	fmt.Println("e =", e, ",f=", f)
	fmt.Println("g =", g, ",h=", h)
	fmt.Println("i =", i, ",k=", k)
}
一个类中,方法名称需要大写才能让外部调用,对外开放,如果方法名称不首字母大写,那么只能方法内调用 eg: LibTest()
指针
package main
import "fmt"
func changeValue(p int) {
	p = 10
}
func main() {
	var a int = 1
	changeValue(a)
	fmt.Println("a = ", a)
}

package main
import "fmt"
func changeValue(p *int) {
	*p = 10
}
func main() {
	var a int = 1
	changeValue(&a)
	fmt.Println("a = ", a)
}

*代表指针
&代表内存地址



![[算法很美打卡第四天] 字符串篇(中)](https://img-blog.csdnimg.cn/9f87966b918d4edfae94e5e79805ad91.png)















