当前位置: 首页 > 工具软件 > Go Rush > 使用案例 >

go 语言小错误

柳珂
2023-12-01



  • 切片的扩容,只有使用 append 的时候管用
  • 指针如果没有声明指向哪里,那么就是 nil
  • 结构体使用 type M struct , 匿名结构体使用var M struct { } 来声明
  • 报错infinite recursive call 无限递归调用
  • map 不需要使用数组类型的申明,见下面代码段1 ,结构题数组的声明使用 下面代码段 2
## map代码 1
func main() {
	m := map[string]int{
		"小刘": 12,
		"小王": 15,
	}
	for k, v := range m {
		fmt.Println(k, v)
	}
}
## 结构体代码 2
  stus := []student{
        {name: "pprof.cn", age: 18},
        {name: "测试", age: 23},
        {name: "博客", age: 28},
    }



Go 语言里的 … 是有两种用法,一个是在字符串前边,一个是在字符串后边。


  • 在前边表示参数不确定
  • 在后边表示将切片打碎了传进去
func test1(args ...string) { //可以接受任意个string参数
    for _, v:= range args{
        fmt.Println(v)
    }
}

func main(){
var strss= []string{
        "qwr",
        "234",
        "yui",
        "cvbc",
    }
    test1(strss...) //切片被打散传入
}


结构体

结构体的声明是要使用键值对

func newAGraph(n int) *AGraph {
	adjList := make([]VNode, n)
	return &AGraph{
		n:       n,       // 结构体是使用键值对的方式来声明的
		e:       0,       //边数为0
		adjList: adjList, // 链表
	}
}

匿名结构体的声明,是在方法内部声明,直接把 type 更改成 var

func main() {
    var user struct{Name string; Age int}
    user.Name = "pprof.cn"
    user.Age = 18
    fmt.Printf("%#v\n", user)
}

当结构体内的东西需要修改的时候,或者结构体内的东西比较大的时候,使用指针类型的结构体

结构体使用 new 声明。

 类似资料: