golang基础|青训营笔记

52 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天

本人的技术栈之前是Java,第一天的学习让我了解到了golang的基本语法与Java的不同。

首当其冲的就是变量的声明方式不同,其次还有控制语句与循环语句的不同,以及指针,结构体等等部分的不同。虽然很不适应,但是经过学习之后,可以体会到Golang在一些方面的优点。

给我印象最深的就是golang中的切片。可以说golang中的切片的功能十分丰富。这里贴出一些简单的操作。这些操作在golang中只需要一些代码,但是在java中可能就需要更多的代码。

	//声明slice1是一个切片,并且初始化,默认值是1,2,3
	slice1 := []int{1,2,3}

	//声明slice2是一个切片,并且给slice2跟配空间
	slice2 := make([]int, 3)	
        //追加
	slice1 = append(slice1, 4)
        //截取
        nums := []int{1, 2, 3, 4, 5}
	for _, num := range nums {
		fmt.Println(num)
	}
	//截取是左闭右开
	subarr := nums[1:3]
	fmt.Printf("%v", subarr)

除了切片之外,golang中的结构体以及结构体方法的实现更是让我大吃一惊。这样的实现让golang这个面向过程的编程语言有了面向对象的特性。

//定义一个结构体
type Book struct {
	title string
	auth  string
}

//值传递,对于struct的传递类似与基本数据类型,传递的是一个副本
//因此改动不会对原来的改变
func changeBook(book Book) {
	book.auth = "li4"
}

func changeBook2(book *Book) {
	//也可以直接book.auth = "li4"
	// go语言对此进行了优化处理
	(*book).auth = "li4"
}

golang与java的不同还体现在golang中保留了指针。但是对指针做了优化处理。结构体可以通过指针直接访问其字段,这是 Go 的语法优化。

//定义一个结构体
type Book struct {
	title string
	auth  string
}


func changeBook2(book *Book) {
	//也可以直接(*book).auth = "li4"
	// go语言对此进行了优化处理
	book.auth = "li4"
}

在实战项目中收获也很多。 第一个实战项目让我更加熟练了golang的基本语法。

第二个实战项目是让我收获最多的项目。除了让我了解到了curlconverter.comOKTools这两个工具,也让我练习了对http与json等标准库的使用。

相比前两个项目,第三个项目的难度变大,学起来很吃力,还有待下一步的提高。