收藏此站 联系我们 网站
当前位置:首页» 行业网站案例 » 【建站服务】迪庆公众号代运营公司-域名申请

【建站服务】迪庆公众号代运营公司-域名申请

作者: 风兰 . 阅读量: 6 . 发表时间:2022-09-21 05:49:24

网站建设

上往建站提供服务器空间服务商百度快照排名网站托管百度推广运营,致力于设计外包服务与源代码定制开发360推广搜狗推广,增加网站的能见度及访问量提升网络营销的效果,主营:网站公司,百度推广公司电话,官网搭建服务,网站服务企业排名,服务器空间,英文域名等业务,专业团队服务,效果好。


迪庆公众号代运营公司

网站建设.png


  1. ,划重点

    当要将结构体对象转换为 JSON 时,对象中的属性首字母必须是大写,才能正常转换为 JSON。

    示例一:

    type Person struct {   Name string      //Name字段首字母大写   age int               //age字段首字母小写}func main() {  person:=Person{"小明",18}  if result,err:=json.Marshal(&person);err==nil{  //json.Marshal 将对象转换为json字符串    fmt.Println(string(result))  }}

    控制台输出:

    {"Name":"小明"}    //只有Name,没有age

    示例二:

    type Person  struct{
         Name  string      //都是大写
         Age    int               }

    控制台输出:

    {"Name":"小明","Age":18}   //两个字段都有

    那这样 JSON 字符串以后就只能是大写了么? 当然不是,可以使用 tag 标记要返回的字段名。

    示例三:

    type Person  struct{
         Name  string   `json:"name"`   //标记json名字为name   
         Age    int     `json:"age"`
         Time int64    `json:"-"`        // 标记忽略该字段}func main(){  person:=Person{"小明",18, time.Now().Unix()}  if result,err:=json.Marshal(&person);err==nil{   fmt.Println(string(result))  }}

    控制台输出:

    {"name":"小明","age":18}
    灭霸

       灭霸

      143***7200@qq.com

    2年前 (2020-09-07)
  2.    森林里的小动物

      wuk***67@gmail.com

    6

    使用结构体的时候需要注意的点:定义的结构体如果只在当前包内使用,结构体的属性不用区分大小写。如果想要被其他的包引用,那么结构体的属性的首字母需要大写。例如

    package mode//结构体小写开头的属性只能包内调用type Books struct {   
        Title string   
        Author string   
        Subject string   
        book_id int}

    当该结构体被引用时:

    import (   
        "fmt"   
        "src/mode")func main() {
       var Book1 mode.Books        /* 声明 Book1 为 Books 类型 */
    
       /* book 1 描述 */
       Book1.Title = "Go 语言"
       Book1.Author = "www.runoob.com"
       Book1.Subject = "Go 语言教程"
    
       // 如果进行了如下调用,则会报错
       // Book1.book_id = 6495407
    
       /* 打印 Book1 信息 *


 Book1.Subject = "Go 语言教程"


   // 如果进行了如下调用,则会报错

   // Book1.book_id = 6495407


   /* 打印 Book1 信息 */

   printBook(Book1)


}


func printBook( book Books ) {

   fmt.Printf( "Book title : %s ", book.Title)

   fmt.Printf( "Book author : %s ", book.Author)

   fmt.Printf( "Book subject : %s ", book.Subject)


   // 无法调用

   // fmt.Printf( "Book book_id : %d ", book.book_id)

}

森林里的小动物

   森林里的小动物


  wuk***67@gmail.com


12个月前 (09-11)

   张三


  461***35@qq.com


   参考地址


9

结构体指针

你可以定义指向结构体的指针类似于其他指针变量,格式如下:


var struct_pointer *Books

以上定义的指针变量可以存储结构体变量的地址。查看结构体变量地址,可以将 & 符号放置于结构体变量前:


struct_pointer = &Book1;

使用结构体指针访问结构体成员,使用 . 操作符:


struct_pointer.title;

定义结构体:


type Books struct {

   title string

   author string

   subject string

   book_id int

}


var book1 = Books {"Go 入门到放弃","yuantiankai","go系列教程",012231}

例子:


var b *Books

  

b = &Book1

fmt.Println(b)    //&{Go 语言 www.runoob.com Go 语言教程 6495407}

fmt.Println(*b)   //{Go 语言 www.runoob.com Go 语言教程 6495407}

fmt.Println(&b)   //0xc000082018

fmt.Println(Book1)    //{Go 语言 www.runoob.com Go 语言教程 6495407}

解释:


其实跟普通的指针是一样的,只不过这次是指定的结构体的指针,在上面的例子中:


var b *Books    //就是说b这个指针是Books类型的。

b  = &Book1    //Book1是Books的一个实例化的结构,&Book1就是把这个结构体的内存地址赋给了b,

*b             //那么在使用的时候,只要在b的前面加个*号,就可以把b这个内存地址对应的值给取出来了

&b            // 就是取了b这个指针的内存地址,也就是b这个指针是放在内存空间的什么地方的。

Book1         // 就是Book1这个结构体,打印出来就是它自己。也就是指针b前面带了*号的效果。

只有一个特殊的地方,尽管 b 所表示的是 Book1 对象的内存地址,但是,在从 b 对应的内存地址取属性值的时候,就不是 *b.title 了。而是直接使用b.title,这点很特殊,它的效果就相当于 Book1.title:


fmt.Println(b.title)   //Go 入门到放弃

fmt.Println(Book1.title)   //Go 入门到放弃

fmt.Println(b.author)   //yuantiankai

fmt.Println(Book1.author)  //yuantiankai

具体区别:


比如我们要写一个函数修改结构体里的一个值,那么我们需要将修改过后的值返回出来,然后再重新赋值,比如这样:


package main

  

import "fmt"

  

type Books struct {

    title string

    author string

    subject string

    book_id int

}

  

func changeBook(book Books) string {   //把book对象传进来,返回的值是string类型的,也就是将被修改的值返回出来。

    book.title = "book1_change"

    return book.title

}

  

func main() {

    var book1 Books;

    book1.title = "book1"

    book1.author = "zuozhe"

    book1.book_id = 1

    var res = changeBook(book1)   //然后在外面拿到被修改的值

    book1.title = res        // 再重新赋值

    fmt.Println(book1)

}

结果为:


{book1_change zuozhe  1}

如果我们这样做,是行不通的,看如下代码:


package main

  

import "fmt"

  

type Books struct {

    title string

    author string

    subject string

    book_id int

}

  

func changeBook(book Books) {  //这个函数没有返回值

    book.title = "book1_change"   //仅仅是修改了一下

}

  

func main() {

    var book1 Books;

    book1.title = "book1"

    book1.author = "zuozhe"

    book1.book_id = 1

    changeBook(book1)   //将book1传进去,本意是想修改book1里面的值

    fmt.Println(book1)

}

结果为:


  

{book1 zuozhe  1}   // 但是结果现实并没有任何修改。

但是有了结构体指针,就不是值传递了,而是引用传递(传递的是地址)了。就可以这么写了:


package main

迪庆公众号代运营公司


上往建站提供搭建网站域名注册官网备案服务网店详情页设计企业网店专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管网页美工排版,致力于域名申请竞价托管软文推广全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机网站推广百度竞价托管网站建设上网建站推广服务网络公司有哪些等业务,专业团队服务,效果好。

服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)


关键词:网站建设,企业网站,网站制作,网页设计,高端网站建设,企业网站制作,网页制作,制作网站,网站设计,高端网页设计,高端网站设计,做网站,自适应网站

全国服务热线
18114747181
二维码
手机端二维码
上往建站
地址:全国各地都有驻点商务 |  网站建设上往建站
在线咨询QQ:1120768800
 
QQ在线咨询
售前咨询热线
18114747181
营销顾问
营销顾问
售后服务热线
400-000-1116
售后服务
售后服务