当前位置: 首页 > news >正文

可以做代发货源的网站artisteer 做的网站

可以做代发货源的网站,artisteer 做的网站,外加工订单网,单位网络建设的设计方案每个无名结构体类型的字面形式均由struct关键字开头,后面跟着用一对大括号{},其中包裹着的一系列字段(field)声明。 一般来说,每个字段声明由一个字段名和字段类型组成。一个结构体类型的字段数目可以为0。struct {tit…

每个无名结构体类型的字面形式均由struct关键字开头,后面跟着用一对大括号{},其中包裹着的一系列字段(field)声明。 一般来说,每个字段声明由一个字段名和字段类型组成。一个结构体类型的字段数目可以为0。

struct {title  stringauthor stringpages  int
}

一个结构体类型的尺寸为它的所有字段的(类型)尺寸之和加上一些填充字节的数目。 常常地,编译器(和运行时)会在一个结构体值的两个相邻字段之间填充(padding)一些字节来保证一些字段的地址总是某个整数的倍数(内存地址对齐, memory address alignment)。

一个零字段结构体的尺寸为零。

每个结构体字段在它的声明中可以被指定一个标签(tag)。从语法上讲,字段标签可以是任意字符串,它们是可选的,默认为空字符串。

struct {Title  string `json:"title" myfmt:"s1"`Author string `json:"author,omitempty" myfmt:"s2"`Pages  int    `json:"pages,omitempty" myfmt:"n1"`X, Y   bool   `myfmt:"b1"`
}

每个字段标签的目的取决于具体应用。上面这个例子中的字段标签用来帮助encoding/json标准库包来将上面这个结构体类型的某个值编码成JSON数据或者从一份JSON数据解码到上面这个结构体类型的某个值中。在编码和解码过程中,encoding/json标准库包中的函数将只考虑导出的结构体字段。这是为什么上面这个结构体的字段均为导出的。

对于类型S的一个值v,我们可以用v.x和v.y来表示它的字段。 v.x(或v.y)这种形式称为一个选择器(selector)。其中的v称为此选择器的属主。 今后,我们称一个选择器中的句点.为属性选择操作符。

如果一个组合字面量中最后一项和结尾的}处于同一行,则此项后的逗号,是可选的;否则此逗号不可省略。

var _ = Book {author: "老貘",pages: 256,title: "Go语言101", // 这里行尾的逗号不可省略
}// 下行}前的逗号可以省略。
var _ = Book{author: "老貘", pages: 256, title: "Go语言101",}

结构体值的赋值

当一个(源)结构体值被赋值给另外一个(目标)结构体值时,其效果和逐个将源结构体值的各个字段赋值给目标结构体值的各个对应字段的效果是一样的。

func f() {book1 := Book{pages: 300}book2 := Book{"Go语言101", "老貘", 256}book2 = book1// 上面这行和下面这三行是等价的。book2.title = book1.titlebook2.author = book1.authorbook2.pages = book1.pages
}

结构体字段的可寻址性

如果一个结构体值是可寻址的,则它的字段也是可寻址的;反之,一个不可寻址的结构体值的字段也是不可寻址的。 不可寻址的字段的值是不可更改的。所有的组合字面量都是不可寻址的。

package mainimport "fmt"func main() {type Book struct {Pages int}var book = Book{} // 变量值book是可寻址的p := &book.Pages*p = 123fmt.Println(book) // {123}// 下面这两行编译不通过,因为Book{}是不可寻址的,// 继而Book{}.Pages也是不可寻址的。/*Book{}.Pages = 123p = &Book{}.Pages // <=> p = &(Book{}.Pages)*/
}

注意:选择器中的属性选择操作符.的优先级比取地址操作符&的优先级要高。

组合字面量不可寻址但可被取地址

一般来说,只有可被寻址的值才能被取地址,但是Go中有一个语法糖(语法例外):虽然所有的组合字面量都是不可寻址的,但是它们都可被取地址。

package mainfunc main() {type Book struct {Pages int}// Book{100}是不可寻址的,但是它可以被取地址。p := &Book{100} // <=> tmp := Book{100}; p := &tmpp.Pages = 200
}

在字段选择器中,属主结构体值可以是指针,它将被隐式解引用

比如,在下面的例子中,为了简洁,(*bookN).pages可以被写成bookN.pages。 换句话说,在这种简写形式中,bookN将被隐式解引用。

package mainfunc main() {type Book struct {pages int}book1 := &Book{100} // book1是一个指针book2 := new(Book)  // book2是另外一个指针// 像使用结构值一样来使用结构体值的指针。book2.pages = book1.pages// 上一行等价于下一行。换句话说,上一行// 两个选择器中的指针属主将被自动解引用。(*book2).pages = (*book1).pages
}

关于结构体值的比较

如果一个结构体类型是可比较的,则它肯定不包含不可比较类型的字段(这里不忽略名为空标识符_的字段)。

关于结构体值的类型转换

两个类型分别为S1和S2的结构体值只有在S1和S2的底层类型相同(忽略掉字段标签)的情况下才能相互转换为对方的类型。 特别地,如果S1和S2的底层类型相同(要考虑字段标签)并且只要它们其中有一个为无名类型,则此转换可以是隐式的。

匿名结构体类型允许出现在结构体字段声明中。匿名结构体类型也允许出现在组合字面量中。通常来说,为了代码可读性,最好少使用匿名结构体类型。

http://www.yayakq.cn/news/423917/

相关文章:

  • 可以玩h5的网站深圳一建公司地址
  • 惠安县住房和城乡规划建设局网站科技网络公司经营范围
  • 企业小型网站要多少钱重庆做网站多少钱
  • 我找伟宏篷布我做的事ko家的网站网站建设岗位的简介
  • 一个公司主体可以在多个网站做备案制作微信公众号的步骤
  • 域名免费注册网站企业查询哪个好用
  • 想学做蛋糕用哪一个网站成都手机网站制作
  • 网站建设的功能需求文档织梦网站手机版端设置
  • 如何做淘客网站九江网站开发
  • 东莞网站推广哪些海口网红图书馆在哪里
  • h5做网站教程网站开发的摘要
  • 小型企业网站建设项目手机网站 微信网站
  • 好看的个人网站模板房天下搜房网
  • 做二手车网站需要什么金华网站建设工程网站建设
  • 工信部isp申请网站河北建设工程信息网官网 费用中项网
  • 跨境电商官方网站建设精诚时代 网站谁做的
  • 电话销售怎么做 网站重庆网站建设培训机构学费
  • 小程序代理推广怎么优化网站排名具体怎么做
  • 怎么给汽车网站做推广电子商务网站开发指南
  • dw做的网站怎么做后台企业商务网站建设论文
  • 济南网站优化培训wordpress用户系统
  • 安徽网站建设微信开发wordpress动画
  • 网站设计怎么做超链接从零学做网站
  • html 网站根目录c 网站开发的好处
  • 帮忙做快站旅游网站成都专业网站营销
  • 巩义网站优化公司安徽淮北发现一例
  • 携程网建设网站的理由最简单的做网站的工具
  • 哈尔滨网站关键词优化网站设计最新风格
  • 网站建设管理考核办法国内搜索网站
  • 做网站流程引流网站怎么做