【Go语言】语法介绍:数组、切片、map、结构体、接口

语法介绍:数组、切片、map、结构体、接口

数组

//数组作为函数参数传入
//以值的形式进行传入
func Fun1(p [5]int) {
	for i, data := range p {
		data++
		fmt.Println("i=", i, " data=", data)
	}
}

//数组以指针的形式传入
func Fun2(p *[5]int) {
	len := len(p)
	for i := 0; i < len; i++ {
		fmt.Println((*p)[i])
	}
}

func main() {
	var a [5]int = [5]int{1, 2, 3, 4, 5}
	fmt.Println("len(a)=", len(a))

	Fun1(a)
	Fun2(&a)
}

切片

var a []int = []int{1, 2, 3, 4, 5} //切片
	fmt.Println(a)
	b := a[1:3:5] //a[low:high:cap]  ——>[low,high)
	fmt.Println(b)
	c := make([]int, 3, 4)  //make创建一个切片,make(类型,长度,容量)
	fmt.Println("len=", len(c), " cap=", cap(c))

 map

m := map[int]string{}
	m[1] = "yyqx"  //添加一个键值对
	m[2] = "hm"
	fmt.Println(m)
	delete(m,2)  //delete(map,key)删除一个键值对

 

结构体

//定义结构体
type Person struct {
	name string
	age  int
}

type Student struct {
	Person //继承
	id     int
	score  int
}

//为结构体类型定义方法
func (temp Person) Print() {
	fmt.Printf("name=%s age=%d\n", temp.name, temp.age)
}

func (s Student) Print() {
	fmt.Printf("name=%s age=%d id=%d score=%d\n", s.name, s.age, s.id, s.score)
}


func main() {
	p := Person{"yyqx", 18}
	p2 := Student{Person{"hm", 18}, 1128, 100}
	p2.Print()
	p.Print()
}

结果:

name=hm age=18 id=1128 score=100
name=yyqx age=18

数组、结构体:都是以值的形式进行传参

切片、map:以引用形式进行传参 

 接口与多态

type Interface1 interface {
	sayHi()  //只有方法定义,没有实现
}

type Person struct {
	name string
	age  int
}

type Student struct {
	Person
	id    int
	score int
}

func (temp Person) sayHi() {
	fmt.Printf("person %s %d\n", temp.name, temp.age)
}

func (temp Student) sayHi() {
	fmt.Printf("student %s %d\n", temp.name, temp.age)
}

//多态
func Fun1(p Interface1) {
	p.sayHi()
}

func main() {
	p := Student{Person{"yyax", 18}, 1, 100}
	Fun1(p)
}

结果:

student yyax 18

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烊萌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值