go当中语法特点

函数接受的参数列表中没有指定大小的数组都是切片,例如:

func rotate(matrix [][]int)  {}//这里的matrix没有指定大小,也就是默认是切片的方式传的值,也就是引用

func rotate(matrix [5][2]int)  {}//这里的matrix指定了大小,也就是按照严格的一维数组传递的值,也就是传递值

结构体有两个关键字:typestruct

type person strct {
    name string
    age int
}
// 需要写与该结构体绑定的函数的时候(*** 建议加上指针,方面修改类内部的值,不加默认是按照值的传参,修改这里的p1不改变原类)
func (p1 *person) changeName () {
    name = "张三"
    fmt.Println(name)
}

make, 创建切片,和map,以及后面的通道和携程

func main() {
    // 创建一个包含5个元素的整型切片
    slice := make([]int, 5)

    m := make(map[string]int, 10)

    // 添加键值对
    m["one"] = 1
    m["two"] = 2
}


string是字符串不是字符切片,要转换成字符切片为:

for _, str := range strs {
    s := []byte(str)//转化为字符切片才能进行排序和swap操作
	sort.Slice(s, func(i, j int) bool {
		return s[i] < s[j]
	})
	sortedStr := string(s)
	mapGroup[sortedStr] = append(mapGroup[sortedStr], str)
}

在go当中指针是代表着地址,可以通过取值*改变它的值,但是要改变它的指向问题,那么只有取二重指针,不能直接改变指向,下面的ch1不能改变a的值,但是ch2可以.(注意对于指针类型,可以把他看作是int类型,要对其进行指向改变,那么只能取二重指针)

package main
import "fmt"
func ch1(a *int) {
	b := 9
	a = &b
}
func ch2(a *int) {
	*a = 9
}
func main() {
	fmt.Println("Google" + "Runoob")
	a := 5;
	ch(&a);
	fmt.Println(a)
}
posted @ 2023-11-07 21:34  铜锣湾陈昊男  阅读(8)  评论(0)    收藏  举报