go学习笔记(2)
来源:互联网 发布:app交友软件排行 编辑:程序博客网 时间:2024/06/06 09:09
继续学习一下go基础,记录一下今天看的视频案例。go编程提倡组合的方式,对于类,继承在go语言当中体现得并不明显。结构体和c编程中的类似。当中还是有差别,用其他语言套反而并不适合go里面的概念。猜测C大神讨厌java的一套下来的继承。
定义一个结构体
type 名称 struct {}
添加变量
type 名称 struct { Name string Level int}type player struct { Name string Level int}
初始化一个结构体
a:=player{ Name:"google", Level:100 }
定义一下结构体,并使用结构体。当中还需要注意是值传递和引用的使用。当中还需要运用指针的设计。
package mainimport ( "fmt")type player struct { Level int Name string}func main() { a := player{ Level: 11, Name: "Google", } fmt.Println("Player", a) showPlayerInfo(a) fmt.Println("Player", a) showPlayerInfo2(&a) fmt.Println("Player", a)}func showPlayerInfo(obj player) { obj.Level = 100 fmt.Println("Level", obj.Level)}func showPlayerInfo2(obj *player) { obj.Level = 13 fmt.Println("Level", obj.Level)}
希望修改一个变量的时候,加入指针地址,例如&a,
showPlayerInfo2(&a)fmt.Println("Player", a)func showPlayerInfo2(obj *player) { obj.Level = 13 fmt.Println("Level", obj.Level)}
如果觉得每次添加&a繁琐,同样可以将其修改成这样。
a := &player{ Level: 11, Name: "Google", } showPlayerInfo2(a) fmt.Println("Player", a)
结构体,还可以定义匿名
b := &struct { Level int Name string }{ Level: 900, Name: "Jack", } fmt.Println("Player", b)
结构体嵌套写法
package mainimport ( "fmt")type money struct { Total int}type player struct { Level int Name string money}func main() { //使用嵌套的结构体 c := player{Level: 100, Name: "baidu", money: money{Total: 200}} fmt.Println("写法一", c.money.Total) //写法一 200 fmt.Println("写法二", c.Total) //写法二 200}
嵌套组合的方式在初始化的时候,引用组合属性的时候可以使用两种访问方式。加上money会区分来自不同的结构体。
c.money.Totalc.Total
同名属性的处理
package mainimport ( "fmt")type money struct { Total int}type stone struct { Total int}type player struct { Level int Name string money stone}func main() { //使用嵌套的结构体 c := player{Level: 100, Name: "baidu", money: money{Total: 200}, stone: stone{Total: 999}} fmt.Println("写法一", c.money.Total) fmt.Println("写法二", c.stone.Total)}
结构体里面player 中引入了money stone 两个结构体,这里为了区分不同的属性Total,这个时候采用第一种方式c.Total就会运行过程出错。为了区分,需要加上引用区分来自不同的Total
c.money.Total //来自money的Total属性 c.stone.Total //来自stone的Total属性
阅读全文
0 0
- 《GO学习笔记》------------------------(2)
- go学习笔记(2)
- Go学习笔记(2)
- Go学习笔记2之初识Go
- Go语言学习笔记 -- 函数(2)
- Go语言学习笔记2
- 《GO学习笔记》------------------------(1)
- Go学习笔记(一)
- Go学习笔记(二)
- go学习笔记(1)
- GO 学习笔记(一)
- go学习笔记(3)
- 【Go学习笔记】Hello Go!
- Go学习笔记(一)初始Go以及环境安装
- Go语言学习笔记2/2
- Go语言学习笔记1/2
- Go语言基础语法学习笔记[2]
- go语言学习笔记(2) 简单结构
- 马云经典语录
- C++参考手册:ASCII码表
- 2.7 UGUI基础
- Spring 之 接口编程
- JAVA中HashMap基本底层原理
- go学习笔记(2)
- vb.net 教程 20-2 base64图片转换 2
- 2.8 UGUI进阶
- Kruskal算法
- Fragment+ViewPager
- leetcode 202. Happy Number
- Burp Repeater中继转发
- HBase详细概述
- PyTorch还是TensorFlow?这有一份新手指南