首页 > 其他分享 >杂记4

杂记4

时间:2023-01-20 21:55:35浏览次数:37  
标签:struct name 杂记 user type 字段名 string

1.为任意类型添加方法(包括系统定义的)

例:

1 type UserMap map[int]User  
2 
3 func (um UserMap) GetUser(id int) User{
4     return um[id]
5 }

 

2.匿名结构体(通常用于只使用一次的情况)

资料里看到的一种写法:

//注意前面是var !!!不是type
var stu struct { //声明stu是一个结构体,但这个结构体是匿名的 Name string Addr string } stu.Name = 'aql' stu.Addr = 'dn'

书上看到的写法:

testStruct := struct{
  intA int8
  intB int8
  intC int8
  intD int8}{
  1,
  2,
  3,
  4}

 

3.结构体中含有匿名成员

type Student struct {
  Id int
  string    // 匿名字段
  float32  // 直接使用数据类型作为字段名,所以匿名字段中不能出现重复的数据类型
}

var stu = Student{Id: 1,string: "aql",float32: 88.8}

 

4.实例化指针类型的结构体变量(创建结构体指针)

type Book struct {
  title   string
  author  string
  subject string  
}

//第一种,使用new函数
var bookOne = new(Book)

//第二种,使用"&"运算符直接对结构体进行取地址操作
bookTwo := &Book{}

 

5.结构体嵌套

type user struct {
  name string
  sex    byte  
}

type paper struct {
  name   string
  author  user
}

p := new(paper)
p.name = "论文标题"
p.author.name = "作者姓名"
p.author.sex = 0

type vedio struct {
  length int
  name  string
  user  //匿名字段,可用数据类型当字段名
}

 

6.字段名冲突

v := new(vedio)
v.length = 13
v.name = "视频名称"

v.sex = 0 // 匿名字段也可以跳过中间字段名,直接访问内部的字段名;等价于v.user.sex = 0  

v.user.name = "作者姓名"  // 由于内部、外部结构体都有name这个字段,名字冲突了,所以需要指定中间字段名。不能跟上面一样可以跳过中间字段名user

 

7.结构体slice传参

user := []User{{Name:"aql"}}

func update_users(users []User){
  users[0].Name = "tql"
}

传slice,对slice的3个字段(unsafe.Pointer, int, int)进行了拷贝,里面含底层数组的指针,所以修改底层数组的元素会反应到原切片上

如果传的是数组,就不会反应到原数组上,因为数组的话传递的是值,改变的是形参,与原数组无关

 

标签:struct,name,杂记,user,type,字段名,string
From: https://www.cnblogs.com/balabalabubalabala/p/17063290.html

相关文章

  • 架构杂记(2)
    每次JVM启动以后都是单独虚拟的一块内存空间,所以程序第一次打印System.out.println(newObject());的结果是一样,不管运行多少次,如果不干别的事,第二次,第三次答应,也分别......
  • 杂记3
    一.字符串拼接1.加号连接2.fmt.Sprintf(formatstring,a...interface{})string3.string.Join(elems[]string,sepstring)string4.使用strings.Builder、bytes.Buffer(两者......
  • 黯然微信小程序杂记(一):从服务器获取数据 后端语言php
    黯然学编程之微信小程序杂记(一):从服务器获取数据后端语言php​​一、功能描述​​​​二、服务器、数据库与微信小程序逻辑的关系​​​​服务器​​​​数据库​​​​与......
  • go语言杂记1
    1.配置环境变量对于Linux和Mac用户,mkdir/data/go_pathvim~/.bashrc加入以下几行        exportGOROOT=/usr/local/go($GOROOT和$GOPATH这两个路径......
  • 架构杂记
    数据库设计的时候,有些时候可考虑横向分表,把不常用,占用空间多,并且这张表的数据可能超过千万级别,这种情况吧一个表分成基础表和拓展表,可以明显的提高数据检索效率,Btree的......
  • 行程码带星喜提八天(杂记篇)
    自己的公众号更新以这样的方式展开,因为与三月初设想有很大的差距。 出来混的总是要还的,常在河边走哪有不湿鞋。哈哈,“隔离”距离自己既遥远又很近,距离上一次隔离差不多有......
  • OI 思维与策略杂记 2022.12
    OI思维与策略杂记(一)这个系列的开坑,主要是为记录和总结一些比较典型或创新的有价值的思维与Trick。文内的题目有一定难度质量是很高的,...嗯其实更多是写给自己总结用的......
  • tidb 杂记
    tidb_biuil_stats_concurrency执行analyzetable时会分成多个小任务,可以同时执行的任务数量。tidb_distsql_scan_concurrency在执行分析表时一次读的regiontidb_index_se......
  • [杂记] 01背包记录路径
    [杂记]01背包记录路径众所周知,01背包的时间复杂度是\(O(nm)\)(n为物品数量,m为背包容量),空间复杂度是\(O(m)\)。如果还需要输出最优解中的所有物品的话,时间复杂度不变,空间复......
  • 【杂记】04:FPGA
    【如何才算学会了FPGA?】https://www.bilibili.com/video/BV1KP411M7CU如何才算是学会了?独立、不参考书本代码的情况下,完成所有实例,才算是入门FPGA。学FPGA需要有电路基础,模......