基本声明

结构体的基本声明和使用方法如下:

package main

import (
	"fmt"
)

// User 结构体描述了一个用户
type User struct {
	FirstName, LastName string
	Email               string
	Age                 int
	userID              int
}

// FullName 方法返回一个用户的全名
func (u *User) FullName() string {
	return fmt.Sprintf("%s %s", u.FirstName, u.LastName)
}

func main() {
	// 零值结构体
	var u User
	fmt.Printf("u: %#v\n\n", u)

	// pu 的类型是 *User, 即一个指向User结构体的指针
	pu := new(User)
	pu.Age = 33
	fmt.Printf("*pu: %#v\n", *pu)

	// &User{} 跟 new(User) 是等价的
	pu = &User{}
	pu.Age = 18
	fmt.Printf("*pu: %#v\n", *pu)

	pu.FirstName, pu.LastName = "Jane", "Doe"
	fmt.Printf("pu.FullName(): %s\n", pu.FullName())
}

结构体中每个值都被称为一个字段。

通常每行只写一个字段,字段的名字写在其类型的前面。

也可以把类型相同的连续字段写在一行,例如上例中的FirstNameLastName

字段名用大写字母开头(如FirstName)表示其为公有字段,即所有的代码都可以访问。

字段名用小写字母开头(如userID)表示其为私有字段,只可以被相同package内的代码访问。

最后更新于