Go语言学习入门-2 尚硅谷Go

Go语言学习入门-2 尚硅谷Go,第1张

Go语言学习入门-2 尚硅谷Go Go 语言学习-2 函数参数的传递方式
值传递
引用类型传递
变量作用域
局部变量 
全局变量
for if 代码块

赋值语句不能在函数外执行。但是可以出初始化

var age int =20 对的
Name :="jack"。不对
Go 字符串函数详解
系统函数

len :是按照字符串的长度 字节返回 一个汉字三个字节。
字符串中有中文 转为[]rune 不会乱码
strconv Atoi

	var ss = "今天真好 goupi"
	runes := []rune(ss)
	for i := 0; i < len(runes); i++ {
		fmt.Printf("字符串%cn", runes[i])
	}
	n, err := strconv.Atoi("12")
	str := strconv.Itoa(12312)
	fmt.Print("er", n, err)
	fmt.Printf("str%s", str)
	var bytes = []byte("hello summit")
	fmt.Print(bytes)
	str = string([]byte{97, 98, 99})
	fmt.Println(str)
	//10 进制转对应2 8 16
	formatInt2 := strconv.FormatInt(123, 2)
	formatInt8 := strconv.FormatInt(123, 8)
	formatInt16 := strconv.FormatInt(123, 16)
	fmt.Println(formatInt2, "x$s", formatInt8, "x$s", formatInt16)
	contains := strings.Contains("seafooe", "sea")
	fmt.Println(contains)
	count := strings.Count("slellscclclsaa", "ads")
	fmt.Println(count)

	fold := strings.EqualFold("abc", "ABC")
	//区分大小写
	fmt.Println("abc" == "ABC")
	//不区分大小写
	fmt.Println(fold)
	fmt.Println(strings.Index("alsl", "ls"))
	fmt.Println(strings.LastIndex("alslwodsls", "ls"))
	fmt.Println(strings.Replace("llosl", "l", "ls", 2)) //返回一个新的字符串原串并没有发生变化 -1 代表替换所有。
	fmt.Println(strings.Split("l,ls,e,sl,ses", ","))    //得到一个新的 本身不会改变
	fmt.Println(strings.ToLower("goLang"))
	//去除左右空格  返回新的字符串 原字符串没变化
	fmt.Println(strings.TrimSpace(" 1losl - asa   "))
	fmt.Println(strings.Trim("! sllwepsl !$$"," !$")) //strings.TrimLeft() TrimRight
	//HasPrefix HasSuffix
	fmt.Println(strings.HasPrefix("ftp://1012","ftp"))
	fmt.Println(strings.HasSuffix("ftp://102/2/1.11","11"))
时间相关函数
now := time.Now()
	fmt.Printf("%v,%T", now, now)
	fmt.Println(now.Day(), now.Month(), now.Second())
	fmt.Printf("%v", now.Year())
	fmt.Println("unix", time.Now().Unix(), "unixnano", time.Now().UnixNano())
	// 2006/01/02 15:04:05 数字是固定的可以组合
	fmt.Println(now.Format("2006/01/02 15:04:05"))
	// 时间常量 休眠
	time.Sleep(time.Second * 10)
	fmt.Println("wait 10 s") //不能用小数 比如 秒/1000 毫秒
	i := 0
	for {
		i++
		fmt.Println(i)
		time.Sleep(time.Millisecond * 100)
		if i == 100 {
			break
		}
	}

Golang 内置函数
len new make

make 和 new 都是用来分配内存。

num2 :=new(int)
	fmt.Printf("num2的类型是%T,值是%v,地址是%v,指向的值%v",num2,num2,&num2,*num2)
	//num2的类型是*int,值是0xc00008c138,地址是0xc000090008

make主要是个引用类型分配:
slice map chan

错误处理机制
Golang处理方式
	defer panic recover
	Go中抛出一个panic异常 然后再defer 中 通过recover 捕获这异常然后正常处理。
	内部匿名函数
自定义错误
	errors.New("错误说明“) 会返回一个error 类型 表示一个错误
	panic 可以接收一个空接口类型 任何值都可以传入。
数组
fmt.Sprinf 格式化输出。 

数组

	数组是值类型 值类型和值传递的问题。
数组内存布局
数组间元素的间隔取决于数组的值的类型。
for range 遍历
	第一个返回值 index 是数组下标
	第二个value值是该下标位置的值
	他们都是仅在for循环内部可见的局部变量
	遍历数组时 如果不想使用下标 index 可以直接把下标置为下划线_
	index 名称不固定可以自定义。
var arr[] int 此时 是一个切片 slice 切片。
函数内修改数组 不会真正改变 原数组的值。
想要修改原数组 :只能采用传指针的方式。
Go中 长度是 数组类型的一部分 比如参数是长度为3 的数组 那必须传入长度为3的数组。
	数组的反转
slice 切片
对于slice  
	len cap cap 一般是len的两倍
切片的内存布局
	slice 从底层来说 是一个数据结构体
使用切片的三种方式
	切片去引用一个已经创建好的数组
	make的方式来创建切片 切片make后才可以使用。
	make形式创建的切片对应的数组是由make底层维护 对外不可见
切片的遍历
	for常规
	for range 结构遍历切片

2022-02-01----

	修改slice 的值 原值也会发生变化。
	切片append 回创建新的底层数组。新的底层数组是底层维护。
	在函数内修改 slice 会改变原数组。
string 和slice
	string本身是不可变的。
	如果需要修改 字符串 则先将 string---> []byte / 或者 []rune--> 修改--> 重写转成string
var strSlice []string = []string{"tom", "kac", "jkqun", "siwbini"}
	fmt.Println(strSlice, len(strSlice), cap(strSlice))
	var slice2 []int = []int{90, 78, 29, 39} //切片
	fmt.Println(slice2, "slice2")
	slice2 = append(slice2, 100)
	//切片上追加切片
	slice2 = append(slice2, slice2...)
	fmt.Println(slice2, "slice2")

	var slice3 = make([]int, 13)
	// 把slice2 拷贝到 slice3 两个都是切片才可以copy
	// 两个切片是独立的空间 修改一个另外一个不变 不会同步变化
	// slice3 长度小于slice2 只截取一定长度。
	copy(slice3, slice2)
	fmt.Println(slice3)
	slice4 := "hello sina mora si wa huis"
	arr := []byte(slice4)
	arr[1] = 'z'
	slice4 = string(arr)
	fmt.Println(slice4)
	// 如果有汉字就会出现乱码 string 转成rune[] 是按照字符计算
	slice5 := "夜深忽梦少年事1002"
	arr1 := []rune(slice5)
	arr1[0] = '被'
	str2 := string(arr1)
	fmt.Println(str2)
二维数组
二维数组的使用和内存布局
二维数组的遍历
	双层for 循环
	for-range 遍历
Go -Map

var map 变量名 map[keytype]valuetype
slice map function 不可以做key 没办法用 == 来判断。
通常为int string

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5719291.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存