go语言基础(6)

package main

import "fmt"

//在函数外部定义结构体  作用域是全局的
//type 结构体名 struct{
//	结构体成员列表
//}

type Student struct {
	id 		int
	name	string
	sex		string
	age 	int
	addr 	string
}


func main01() {

	//通过结构体名  定义结构体变量
	//var s Student
	结构体变量名.成员名
	//s.id=101
	//s.name="张飞"
	//s.sex="男"
	//s.age=28
	//s.addr="北京燕郊"
	//
	//fmt.Println(s)

	//var s Student=Student{101,"关羽","男",29,"山西运城"}
	s:=Student{age:30,id:103,name:"刘备",addr:"巴蜀",sex:"男"}
	fmt.Println(s.id)
	fmt.Println(s.name)
	fmt.Println(s.sex)
	fmt.Println(s.age)
	fmt.Println(s.addr)

    s:=Students{101,"貂蝉","女",18,"徐州"}
    //结构体变量赋值
	s1:=s

	s1.age=22

	fmt.Println(s1)
	fmt.Println(s)

	//在结构体中使用== != 可以对结构体成员进行比较操作
	if s1==s{
		fmt.Println("相同")
	}else {
		fmt.Println("不相同")
	}

	//大于 小于可以比较结构体成员

	if s.age > s1.age{
		fmt.Println("真")
	}else {
		fmt.Println("假")
	}
}

func main02() {

	//var 结构体变量名 结构体类型

	//定义结构体数组
	//var 结构体数组名 [元素个数]结构体类型
	var arr [5]student

	//len(数组名)计算数组元素个数
	//fmt.Println(len(arr))

	for i:=0;i<len(arr) ;i++ {
		    fmt.Scan(&arr[i].id,&arr[i].name,&arr[i].sex,&arr[i].age,&arr[i].score,&arr[i].addr)
	}


	//结构体 排序 根据结构体成员进行排序
	/*
	101 孙尚香 女 16 88 江东
102 黄月英 女 28 90 襄阳
103 大乔 女 26 70 江东
104 小乔 女 24 60 江东
105 甄姬 女 20 50 许昌
	 */

	for i := 0; i < len(arr)-1; i++ {
		for j := 0; j<len(arr)-1-i;j++  {
			//比较结构体成员 年龄  成绩
			if arr[j].score > arr[j+1].score{
				//结构体数组中的元素 允许相互赋值  将结构体成员中的所有数据进行相互交换

				//arr[j],arr[j+1]=arr[j+1],arr[j]
				//结构体成员依次交换  不建议采用
				//arr[j].id,arr[j+1].id=arr[j+1].id,arr[j].id
				//arr[j].name,arr[j+1].name=arr[j+1].name,arr[j].name
				//arr[j].sex,arr[j+1].sex=arr[j+1].sex,arr[j].sex
				//arr[j].score,arr[j+1].score=arr[j+1].score,arr[j].score
				//arr[j].age,arr[j+1].age=arr[j+1].age,arr[j].age
				//arr[j].addr,arr[j+1].addr=arr[j+1].addr,arr[j].addr
			}
		}
	}

	for i := 0; i<len(arr);i++  {
		fmt.Println(arr[i])
	}

}
func main03(){
	//[元素个数]数组   []切片len
	arr:=[]student{{101,"曹操","男",58,90,"许昌"},
	{102,"夏侯惇","男",40,100,"荆州"},
	{103,"张辽","男",38,99,"许昌"}}


	//在切片中添加数据

	arr=append(arr,student{104,"许褚","男",28,99,"许昌"})
	arr=append(arr,student{105,"典韦","男",38,99,"许昌"})
	for i,v:=range arr{
		fmt.Println(i,v)
	}
}
package main

import "fmt"

type stu struct {
	name string
	age int
	score int
}
func main0501() {

	//定义map
	m:=make(map[int]stu)

	m[101]=stu{"周瑜",28,101}
	m[102]=stu{"孙策",32,78}

	//fmt.Println(m)
	for k,v:=range m{
		fmt.Println(k,v)
	}

}
func main(){
	m:=make(map[int][]stu)
	m[101]=append(m[101],stu{"曹操",50,88},stu{"张辽",38,98},stu{})
	m[102]=append(m[102],stu{"刘备",50,88},stu{"张飞",38,98})
	m[103]=append(m[103],stu{"孙权",50,88},stu{"甘宁",38,98},stu{"太史慈",38,98})

	//m[101][1].name="张文远"
	for k,v:=range m {
		for i,data:=range v{

			if data.name=="张飞"{
				fmt.Println(k,i,data)
			}
			//fmt.Println("key:",k,"index",i,"value:",data)
		}
	}

}
package main

import "fmt"

type person struct {
	id int
	name string
	score int
	sex string
}

func test(s person){

	//fmt.Println(s.name)
	//fmt.Println(s.score)
	//fmt.Println(s.sex)
	s.name="李逵"
}

func main0601() {

	stu:=person{101,"宋江",9,"男"}
	//结构体作为函数参数  值传递
	test(stu)


	fmt.Println(stu)

}

//所有的切片都属于地址传递
func test1(stu []person){

	stu[0].name="晁盖"

}
func main(){
	//结构体切片
	stus:=[]person{person{101,"宋江",9,"男"},
	person{102,"卢俊义",99,"男"}}
	//为切片添加信息
	stus=append(stus,person{103,"吴用",88,"男"})
	//结构体切片作为函数参数是地址传递
	//结构体数组作为函数参数是值传递
	test1(stus)

	fmt.Println(stus)
}

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值