后端训练营一,走进GO语言基础学习笔记

90 阅读2分钟
               初学一门语言的最好方法,就是看教程,编程和试错思考

走进GO语言基础

基础语法——Range遍历的试错

对于ppt中的程序 image.png 我尝试将i换成sum,想知道会有什么样的结果

func main() {
	nums := []int{2,3,4}
	sum := 2
	for sum , num := range nums {
		fmt.Println(sum)//0,1,2
		sum += num
		fmt.Println(sum)//2,4,6
		if num == 4{
		fmt.Println("index",sum,"num:",num)//index: 6,num: 4
		}
		
	}
	fmt.Println(sum)//2

}

for循环外的sum作用域不影响for循环内sum作用域,各个值单独计算。 其中range中的sum是以索引身份存在,依次被赋值为0,1,2

因此我便理解了range的遍历行为和命名形式。

遍历的不确定性

Go 语言在运行时为哈希表的遍历引入了不确定性(摘自《GO设计与实现》):

func main() {
	hash := map[string]int{
		"1": 1,
		"2": 2,
		"3": 3,
	}
	for k, v := range hash {
		println(k, v)
	}
}
/*两次运行的结果*/
go run "d:\01project\1.go"
1 1
2 2
3 3
go run "d:\01project\1.go"
2 2
3 3
1 1

但是

import{
    "fmt"
}
利用 fmt.Println() 函数可以避免不确定性

基础语法——函数

func add(a int,b int) int {
	return a+b
	
}
func add2(a , b int) int {
	return a + b
	
}
func  exsits(m map[string]string , k string) (v string,ok bool) {
	v, ok = m[k]
	return v,ok	
}
func main()  {
	res := add2(1,2)
	fmt.Println(res)// 3

	v,ok := exsits(map[string]string{"a":"A"},"a")
	fmt.Println(v,ok)// A ,true
}

特点

一、golang的函数函数类型是后置的

二、golang里面的函数原生支持返回多个值(如func exsits)

基础语法——指针

func add2(n int){
	n += 2
}
func add2ptr(n *int){
	*n += 2
}

func main(){
	n := 5
	add2(n)
	fmt.Println(n)// 5,目标运算失败
	add2ptr(&n)//&为了类型匹配
	fmt.Println(n)// 7,目标运算成功
}

基础语法——结构体

image.png

可以通过type *** struct创建结构体,然后传入参数

image.png

带指针才能对结构体修改,否则不行

错误处理

image.png 注意,需要 import "errors"

go语言的处理方式,能够很清晰地知道哪个函数返回了错误,并且能用简单的 if else 来处理错误在函数里面,可以在那个函数的返回值类型后面加一个 error,就代表这个函数可能会返回错误。 现在函数实现的时候,return 需要同时 return 两个值,要么就是如果出现错误的话,那么可以 retumn nil和一个 error,如果没有的话,那返回原本的结果.

字符串

注意:import "strings"

image.png

count——计数;index——查找位置;join——连接多个字符串;repeat——重复多个字符串 等等

字符串格式化

image.png

用%v || %+v || %#v 打印任意类型变量

JSON处理

image.png

时间处理

image.png

数字解析

image.png

进程信息

image.png