Go语言基础:struct

uudou · · 1699 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

跟C语言或其它语言一样,也有结构体struct。C语言中用关键词typedef来给结构体定义,Go中用的都是type。

struct语法格式

type typeName struct {
...
}

例如:

type person struct {
    name string
    age int
}

struct声明

var P person
P.name = "Sun"
P.age = 30
//也可以
P := peron{"Sun", 30}
//通过 field:value 的方式初始化,这样可以任意顺序
P := person{age:29, name:"Sun"}

上面有三种声明的方法,其中第三种比较特殊,是Go独有的声明。

struct的匿名字段

匿名字段也称为嵌入字段,C语言中也有这个功能,但是再Go中它比C更强大,更自由。

package main

import "fmt"

type Course []string

type Student struct {
    name  string
    age   int32
    grade string
}

type Class struct {
    Student // 匿名字段,struct
    Course  // 匿名字段,自定义的类型
    int32   // 内置类型作为匿名字段
    teacher string
}

func main() {
    stu1 := Class{Student: Student{"Rob", 10, "4年纪"}, teacher: "杰伦"}

    //修改Course字段
    stu1.Course = make([]string, 5)
    stu1.Course[0] = "English"
    stu1.Course = append(stu1.Course, "Chinsese")

    //修改匿名内置类型字段
    stu1.int32 = 4

    fmt.Print(stu1)
}

输出:

{{Rob 10 4年纪} [English     Chinsese] 4 杰伦}

上面的例子,可以看出Go中的struct不仅可以将struct作为匿名字段,用type自定的类型以及内置的类型都可以作为匿名字段。这点比C语言要强大自由多了。


有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:uudou

查看原文:Go语言基础:struct

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1699 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传