插件窝 干货文章 Go语言结构体定义:var和type关键字有何区别?

Go语言结构体定义:var和type关键字有何区别?

类型 变量 结构 Person 105    来源:    2025-03-13

在Go语言中,vartype 关键字用于不同的目的,尤其是在定义结构体时,它们的作用有明显的区别。

1. type 关键字

type 关键字用于定义新的类型。你可以使用 type 来定义一个结构体类型,或者为现有的类型创建一个别名。

定义结构体类型

type Person struct {
    Name string
    Age  int
}

在这个例子中,Person 是一个新的结构体类型,它有两个字段:NameAge

定义类型别名

type Age int

在这个例子中,Ageint 类型的一个别名。虽然 Ageint 在底层是相同的类型,但它们在类型系统中是不同的类型。

2. var 关键字

var 关键字用于声明变量。你可以使用 var 来声明一个结构体类型的变量。

声明结构体变量

var p Person

在这个例子中,p 是一个 Person 类型的变量。你可以通过 p.Namep.Age 来访问它的字段。

声明并初始化结构体变量

var p = Person{Name: "Alice", Age: 30}

或者使用短变量声明:

p := Person{Name: "Alice", Age: 30}

区别总结

  • type 关键字用于定义新的类型(如结构体类型或类型别名)。
  • var 关键字用于声明变量,包括结构体类型的变量。

示例代码

package main

import "fmt"

// 使用 type 定义结构体类型
type Person struct {
    Name string
    Age  int
}

func main() {
    // 使用 var 声明结构体变量
    var p1 Person
    p1.Name = "Bob"
    p1.Age = 25

    // 使用 var 声明并初始化结构体变量
    var p2 = Person{Name: "Alice", Age: 30}

    // 使用短变量声明
    p3 := Person{Name: "Charlie", Age: 35}

    fmt.Println(p1) // 输出: {Bob 25}
    fmt.Println(p2) // 输出: {Alice 30}
    fmt.Println(p3) // 输出: {Charlie 35}
}

在这个示例中,type 用于定义 Person 结构体类型,而 var 用于声明和初始化 Person 类型的变量。