golang:结构体定义

结构体

Go 语言通过用自定义的方式形成新的类型,结构体是类型中带有成员的复合类型。Go 语言使用结构体和结构体成员来描述真实世界的实体和实体对应的各种属性。

Go 语言中的类型可以被实例化,使用new或&构造的类型实例的类型是类型的指针。

结构体成员是由一系列的成员变量构成,这些成员变量也被称为“字段”。字段有以下特性:

  • 字段拥有自己的类型和值。
  • 字段名必须唯一。
  • 字段的类型也可以是结构体,甚至是字段所在结构体的类型。

关于 Go 语言的类(class)

  • Go 语言中没有“类”的概念,也不支持“类”的继承等面向对象的概念。

  • Go 语言的结构体与“类”都是复合结构体,但 Go 语言中结构体的内嵌配合接口比面向对象具有更高的扩展性和灵活性。

  • Go 语言不仅认为结构体能拥有方法,且每种自定义类型也可以拥有自己的方法。

定义

结构体的定义格式如下:

type 类型名 struct {
    字段1 字段1类型
    字段2 字段2类型
    …
}

举个例子:

type Point struct {
    X int
    Y int
}

同类型的变量也可以写在一行:

type Color struct {
    R, G, B byte
}

结构体的定义只是一种内存布局的描述,只有当结构体实例化时,才会真正地分配内存

结构体数组排序

func main() {
	slStdnt := []struct {
		Name   string
		Age    int
		Height int
	}{
		{"Alice", 23, 175},
		{"David", 18, 185},
		{"Eve", 18, 165},
		{"Bob", 25, 170},
	}

	// 用 age 排序,年龄相等的元素保持原始顺序
	sort.SliceStable(slStdnt, func(i, j int) bool {
		return slStdnt[i].Age < slStdnt[j].Age
	})
	fmt.Println(slStdnt)
}

你可能感兴趣的:(golang,golang,java,开发语言)