Golang 初入坑时一些特别的语法知识点

(CSDN使用新的编辑器了!但是还是没有Golang语言啊,掀桌)

环境:Sublime3  语言:Go

总起:

个人主要接触是C系列的语言为主(像是C++、Java、C#),所以习惯上这类语言编写的时候非常轻松。

当时在写lua的时候记录过一些lua特别(奇葩?)的地方,作为给自己的一些提醒,不过当时也没写成博客,下次写lua的时候再整理一下。

刚学完无闻的教程,先来整理一下Golang语法上一些特殊的地方,可能不是很完整,主要留作编写代码时的查阅。

特殊之处:

变量的申明和初始化

// 基本变量初始化的三种方式
var str1 string = "你好"
var str2 = "Hello"
str3 := "こんにちは"

// 数组初始化的三种方式
var arr1 [3]int
arr2 := [3]int{1, 2, 3}
arr3 := [...]int{1, 2, 3, 4, 5}

// 指针的使用
p1 := &arr1
p2 := new([10]int)

// 注:	在golang中直接在函数中传递一般都为值传递,
//		需要引用传递必须使用指针的方式

// slice的初始化 一种go独有的高级指针
var slice1 []int
slice2 := arr1[1:]
slice3 := make([]int, 3, 6)

// 注:	slice用当前容量和最大容量的概念,
//		例中的slice3当前容量为3,最大容量为6,
//		分别使用len(slice3)和cap(slice3)取得。
//		操作方式有append(slice3, ... )添加,copy(tar,sou)拷贝

// map的初始化
var m1 map[int]string = make(map[int]string)
m2 := make(map[int]string)

// 匿名函数
fun1 := func() {}

// chan WaitGroup
chan1 := make(chan bool)
wg := sync.WaitGroup{}

条件语句

i := 1
// if的两种形式
if i > 0 { }
if i := 0; i == 0 { }

// for的四种形式
for { break }
for i == 0 { }
for i := 0; i < 1; i++ { }
for k, v := range m1 { fmt.Println(k, v) }

// switch
switch i {
case 1:
case 2:
}
switch i := 1; {
case i == 1:
case i == 2:
}

// 注:	go中的switch有很多不同之处,
//		case判断成功后,只会执行当前语句块,想要继续判断使用fallthrough,
//		switch中可以执行类似第二种的条件检测


struct

type Person interface {
	Name() string
}

type Teacher struct {
	name  string
	class int
}

func (t Teacher) Name() string {
	return t.name
}

func (t *Teacher) ChangeClass(other int) {
	t.class = other
}

func (t *Teacher) AddStudents(stus ...int) {
}

类型转换

// 类型转换
str4 := string(65) // 得到A
str5 := strconv.Itoa(65)

t := &Teacher{"老王", 3}
t.ChangeClass(4)

// 接口转类
var p Person = t
if tTmp, ok := p.(*Teacher); ok {
	fmt.Println(tTmp.Name())
}
switch p.(type) {
case *Teacher:
}

异常与恢复

// 异常与恢复
defer func() {}()

// 注:	defer相当于finally,
//		但他是函数执行完或抛异常后,从后往前执行
defer func() {
	// recover恢复程序,继续执行
	if err := recover(); err != nil {
		fmt.Println(err)
	}
}()
panic("Painc") // 抛异常

个人:

学习的时候,前面的基本没什么问题,到并发那块就有点懵逼了,而Golang最精华的所在的就是并发吧,等下次仔细研究一下。



猜你喜欢

转载自blog.csdn.net/u012632851/article/details/78992288