首页 > 其他分享 >golang中结构体初始化的语法格式

golang中结构体初始化的语法格式

时间:2024-04-09 14:01:37浏览次数:13  
标签:初始化 string golang User 语法 结构 字段名 struct


在Go语言中,结构体(struct)的初始化可以通过以下几种方式来进行:

  1. 键值对初始化(字段名明确指定):
    当结构体字段很多或者你需要只初始化部分字段时,可以采用键值对的方式来初始化结构体。每个字段名后面跟一个冒号和它的值。

    type Person struct {
        Name string
        Age  int
        City string
    }
    
    // 键值对初始化
    person := Person{
        Name: "Alice",
        Age:  25,
        // City 字段在这里未初始化,其值将是零值(对于字符串则是 "")
    }
    
    // 全部字段初始化
    person2 := Person{
        Name: "Bob",
        Age:  30,
        City: "New York",
    }
    
  2. 值列表初始化(按顺序初始化):
    如果结构体字段数量不多,并且你希望按顺序初始化所有字段,可以不使用字段名而直接列出值。

    type Point struct {
        X int
        Y int
    }
    
    // 值列表初始化
    point := Point{10, 20}
    
  3. 隐式字段名初始化(如果字段名与变量名相同):
    当外部变量名与结构体字段名相同时,可以在初始化时省略字段名。

    type User struct {
        Username string
        Password string
    }
    
    username := "user1"
    password := "password1"
    
    user := User{username, password}
    
  4. 结构体字面量与复合字面量:
    从Go 1.17开始,还可以使用结构体字面量(Composite Literals)特性,即使结构体字段名与外部变量名不同,也可以通过=:来指定字段名。

    user := User{
        Username: = username,
        Password: = password,
    }
    
  5. new() 函数初始化:
    使用 new() 函数分配内存并返回指向结构体类型的指针,此时结构体的所有字段都是它们各自的零值。

    u := new(User) // u 是 *User 类型,所有字段都为零值
    
  6. 匿名结构体初始化:
    可以在声明时直接初始化匿名结构体。

    anonymous := struct {
        Field1 string
        Field2 int
    }{"Value1", 42}
    
  7. 嵌套结构体初始化:
    如果结构体包含嵌套结构体,也可以递归地初始化它们。

    type Address struct {
        Street string
        Zip    string
    }
    
    type Person struct {
        Name    string
        Address Address
    }
    
    person := Person{
        Name: "Charlie",
        Address: Address{
            Street: "123 Main St.",
            Zip:    "12345",
        },
    }
    

标签:初始化,string,golang,User,语法,结构,字段名,struct
From: https://www.cnblogs.com/yubo-guan/p/18123831

相关文章

  • Python中的异常处理 异常是什么? 异常处理的语法 基本的异常处理示例 捕获多个异常 fin
    Python中的异常处理异常是什么?异常处理的语法基本的异常处理示例捕获多个异常finally语句自定义异常异常处理的最佳实践——《跟老吕学Python编程》附录资料Python中的异常处理异常是什么?异常处理的语法基本的异常处理示例Python捕获多个异常finally语句Py......
  • 【go】golang中的通道
    通道:channel名词:在goroutine中通信的管道注意:任何时候,同一时刻只能有一个goroutine访问通道进行发送和获取数据通道的顺序:遵循先入先出的规则通道的定义//定义一个通道var变量名chan数据类型//比如:varintChchanint64varstrChchanstringvarmapChchanm......
  • python基础语法
    注:本文中不含有环境配置与安装,创建工程等步骤。环境为python3.8、pycharm2020;python默认的编码格式是ASCII格式;需要使用#-*-coding:UTF-8才能读取中文。1、注释        采用 #(单行)或者三引号进行注释(多行)#单行注释'''Python中单引号'和双引号"使......
  • vuex分了多个模块,利用语法糖调用不同模块里的方法
    //store/modules/a.jsexportdefault{state:{...},getters:{...},mutations:{...},actions:{...}}//store/modules/b.jsexportdefault{state:{...},getters:{...},mutations:{...},actions:{...}}//store/in......
  • c++类与对象<三>初始化列表,静态成员,友元,匿名对象
    目录前言一:再次认识构造函数之成员初始化列表初始化成员变量1.类对象整体的定义与对象中每个成员变量的定义2.初始化列表3.explicit 关键字二:static成员 1.概念2.经典实例:实现一个类,计算程序中创建出了多少个类对象3.特点总结 三:匿名对象 1.匿名对象就像结构体......
  • 最小化安装Ubutun后的初始化操作
    最小化安装Ubutun后的初始化操作由于Ubutub相关配置路径与红帽系操作系统有些差异,这边进行一些简单初始化记录。使用的操作系统镜像为:ubuntu-20.04.6-desktop-amd64.iso1.root账户配置使用该镜像安装系统,没有红帽系安装过程中对root用户的配置。需要进入系统后使用sudopassw......
  • 前端【VUE】06-vue【组件组成】【组件通信】【进阶语法】
    一、组件的三大组成部分(结构/样式/逻辑)组件的三大组成部分组件的样式冲突scoped1、components目录下components/BaseOne.vue1<template>2<divclass="base-one">3BaseOne4</div>5</template>67<script>8exportdefault{9......
  • 【编译原理】手工打造语法分析器
    重点:语法分析的原理递归下降算法(RecursiveDescentParsing)上下文无关文法(Context-freeGrammar,CFG)关键点:左递归问题深度遍历求值-后续遍历上一篇「词法分析器」将字符串拆分为了一个一个的token。本篇我们将token变成语法树。一、递归下降算法还是这个例子in......
  • C# 语法糖 ver1
    1//1.集合初始化器2List<string>strs=newList<string>{"zhangsan","lisi","wangwu"};3int[]numbers={1,2,8,6,9,1};45//2.空合并运算符6stringInputName=null;7InputName="11";8stri......
  • 【Linux】Makefile 基本语法
    make:一般说的是GNUMake,是一个软件,将源代码文件编译成可执行的二进制文件;Makefile:make工具编译的时候需要使用Makefile文件,Makefile文件描述了整个工程的编译、连接规则。接上一节:make工具和Makefile文件的引入Makefile举例注意Makefile的大小写!!!需要......