—— 每个可执行的应用程序必须包含一个主函数,它是执行的入口点。主函数应该存在main包中。


结构体: 通过 操作符访问结构体的各个成员!

1. 定义结构体类型person:

type person struct{
name string
age int
}

使用结构体类型定义结构体变量:

  P := person{ "星星",  22 }                 //按顺序初始化

  P := person{ age:22,  name:"星星" }   //使用键值对方式,顺序可以任意

  P := new(person);  P.age = 22;  P.name = "星星"    //new方式,未设置初始值时采用默认初始值

2. 结构体指针: 存储结构体变量的地址,也可以通过 . 操作符访问结构体变量的各个成员

  var pointer_name *person

3. 匿名字段(类似继承): 不仅仅可以是结构体类型哦,所有的内置类型和自定义类型都可以作为匿名字段。

 type Human struct {
name string
age int
weight float32
}

type Student struct {
Human // 匿名字段,代表Student包含Human的所有字段/成员
special string
}
此时对Student实例化: mark := Student{Human{"Mark", 22, 100.0}, "Computer Science"}
注意:可以使用.调用所有属性值(包括匿名字段中的属性),
也可以mark.Human = Huamn{"Mark", 22, 100}; mark.Human.age = 0              

4. 结构体嵌套

type Address struct {
city, state string
}
type Person struct {
name string
age int
address Address //结构体类型变量作另一个结构体的成员
} ​
func main() {
var p Person
p.name = "Naveen"
p.age = 50
p.address = Address {
city: "Chicago",
state: "Illinois",
}
fmt.Println("Name: ", p.name)
fmt.Println("City: ", p.address.city)
}

5. 导出结构体和导出字段:

如果结构体类型以大写字母开头,那么它就是一个导出类型,可以从其它包中对它进行访问;类似,如果结构体中的字段以大写字母开头,也可以在其它包中访问它们。

在computer目录下,创建文件spec.go                   

package computer
type Spec struct { //exported struct
Maker string //exported field
model string //unexported field
Price int
}

创建main.go 文件

import "../structs/computer"     //或 import "./computer"或者 import "根目录"
import "fmt"
func main() {
var spec computer.Spec
spec.Maker = "apple"
spec.Price = 50000
fmt.Println("Spec:", spec)
}

                  目录结构如下:
                                  src
                                        structs
                                                  computer
                                                          spec.go
                                                  main.go
6.
结构体的比较:

   结构体是值类型,如果每个字段都具有可比性,则结构体就是可比较的

   如果两个结构体变量对应字段的值都是相等的,则它们就是相等的!

Go语言学习笔记(8)——包和结构体的更多相关文章

  1. Go语言学习笔记(四)结构体struct & 接口Interface & 反射

    加 Golang学习 QQ群共同学习进步成家立业工作 ^-^ 群号:96933959 结构体struct struct 用来自定义复杂数据结构,可以包含多个字段(属性),可以嵌套: go中的struc ...

  2. Go语言学习笔记(四)结构体struct & 接口Interface & 反射reflect

    加 Golang学习 QQ群共同学习进步成家立业工作 ^-^ 群号:96933959 结构体struct struct 用来自定义复杂数据结构,可以包含多个字段(属性),可以嵌套: go中的struc ...

  3. c语言学习笔记(10)——结构体

    ------------------------------------------------------------------ # include <stdio.h> struct ...

  4. swift学习笔记3——类、结构体、枚举

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

  5. Bash脚本编程学习笔记07:循环结构体

    本篇中涉及到算术运算,使用了$[]这种我未在官方手册中见到的用法,但是确实可用的,在此前的博文<Bash脚本编程学习笔记03:算术运算>中我有说明不要使用,不过自己忘记了.大家还是尽量使用 ...

  6. C语言学习总结(1)——结构体

      一,什么是结构体    我们知道数组(Array),它是一组具有相同类型的数据的集合.但在实际的编程过程中,我们往往还需要一组类型不同的数据,例如对于学生信息登记表,姓名为字符串,学号为整数,年龄 ...

  7. Bash脚本编程学习笔记06:条件结构体

    简介 在bash脚本编程中,条件结构体使用if语句和case语句两种句式. if语句 单分支if语句 if TEST; then CMD fi TEST:条件判断,多数情况下可使用test命令来实现, ...

  8. C学习笔记(1)-结构体、预处理与多文件结构程序设计

    一.结构体的定义与使用 #include <stdio.h> //定义结构体(类似模板) typedef struct { char name[50]; int age; char add ...

  9. 【Swift】学习笔记(八)——类和结构体

    1.类和结构体的定义 <pre name="code" class="html">struct Resolution { var width = 0 ...

随机推荐

  1. 深度学习面试题29:GoogLeNet(Inception V3)

    目录 使用非对称卷积分解大filters 重新设计pooling层 辅助构造器 使用标签平滑 参考资料 在<深度学习面试题20:GoogLeNet(Inception V1)>和<深 ...

  2. 开启和关闭oracle数据库中的审计功能

    第1步:查看审计功能是否开启?SQL> show parameter audit;NAME                                 TYPE        VALUE-- ...

  3. ajax上传图片报错TypeError: 'append' called on an object that does not implement interface Fo

    使用FormData时报错:TypeError: 'append' called on an object that does not implement interface FormData 解决办 ...

  4. OGC定义的几何要素

    OGC定义了两种描述几何对象的格式,分别是WKB(Well-Known Binary)和WKT(Well-Known Text). 在SQL语句中,用以下的方式可以使用WKT格式定义几何对象:几何类型 ...

  5. 网络分裂 redis 集群

    REDIS cluster-tutorial -- Redis中文资料站 -- Redis中国用户组(CRUG) http://www.redis.cn/topics/cluster-tutorial ...

  6. 到底啥是鸭子类型(duck typing)带简单例子

    #百度百科鸭子类型定义 这是程序设计中的一种类型推断风格,这种风格适用于动态语言(比如PHP.Python.Ruby.Typescript.Perl.Objective-C.Lua.Julia.Jav ...

  7. Hive小文件处理

    小文件是如何产生的: 动态分区插入数据的时候,会产生大量的小文件,从而导致map数量的暴增 数据源本身就包含有大量的小文件 reduce个数越多,生成的小文件也越多 小文件的危害: 从HIVE角度来看 ...

  8. NodeVisitor

    /* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield * * This library is open source ...

  9. EXCEL导入配置开发

    1.登录infor 企业级 选择 配置 EXCEL导入配置 2.新增配置(设置模板名.说明.存储过程名称.应用仓库) 后保存 3.将excel模板放到服务器 路径:/opt/infor/sce/wil ...

  10. git clone 使用用户名和密码

    git clone http://邮箱(或用户名):密码@仓库 示例: 邮箱 xw@qq.com 密码: xw 仓库: http://git.test.com/abc/demo 注意: 邮箱中的 @ ...