• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

go语言初始化结构体的几种方式

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
  • 知识点:

    • 1、go语言的类型别名和类型声明

      • type name = string  // 类型别名
        type name string // 类型声明
        
        
        
    • 2、结构体赋值

      • 1、使用键值对初始化结构体

        • ins := 结构体类型名 {
          	字段1:字段1的值,
          	字段2:字段2的值,
          	...
          }
          
      • 2、使用多个值的列表初始化结构体

        • Go 语言可以在“键值对”初始化的基础上忽略“键”, 也就是说,可以使用多个值的列表初始化结构体的字段

          • 书写格式:

          • ins := 结构体类型名 {
            	字段1的值,
            	字段2的值,
            	...
            }
            
          • 使用这种格式初始化时,必须初始化所有字段,每个字段初始化的顺序和声明顺序要保持一致,

          • 键值对 和 值列表 不能混用

      • 3、初始化匿名结构体

        • 匿名结构体没有类型名称,无需通过 type 关键字定义就可以直接使用

        • 匿名结构体定义格式和初始化写法

          • ins := struct {
            	// 匿名结构体字段定义
            	字段1 字段类型1
            	字段2 字段类型2
            	...
            }{
            	//字段值初始化
            	初始化字段1:字段1的值,
            	初始化字段2:字段2的值,
            	...
            }
            
      • 4、Go 语言构造函数

        • Go 语言的类型或结构体没有构造函数的功能,但是我们可以使用结构体的过程来模拟实现构造函数

        • type Cat struct {
          	Color string
          	Name string
          }
          
          // 用名字构造猫结构的函数,返回 Cat 指针
          func NewCatByName(name string) *Cat {
          	return &Cat{ // 取地址实例化猫的结构体
          		Name:name,
          	}
          }
          
          func NewCatByColor(color string) *Cat {
          	return &Cat{
          		Color:color,
          	}
          }
          
        • Go 语言中没有提供构造函数相关的特殊机制,用户根据自己的需求,将参数使用函数传递到结构体构造参数中即可完成构造函数的任务。

  • Go 语言中的 rune 类型浅析

    • 概念:

      • rune 是Go 语言中的一种特殊的类型,他是 int32 的别名,几乎所有方面等同于 int32
    • 作用:

      • 用于区分字符值和整数值

      • package main
        
        import "fmt"
        
        func main() {
        	
        	var str = "hello 世界"
        	fmt.Println("len(str)",len(str)
        
        }
        
      • 结果为:

        • len(str), 12

        • 从字符串字面量看 len(str) 的结果应该是 8 ,但在 Golang 中 string 类型底层是通过 byte 大户组实现的,在 unicode 编码中中文字符占 两个字节,而在 utf - 8 编码中,中文站三个字节,而 Golang 默认编码是 utf-8.

        • 那么,如果想获取真实的字符串长度而不是其多占的字节数,有两种方法:

          • 方法一:

          • 使用 Unicode/utf-8 包中的 RuneCountInString 方法

          • str = "hello 世界"
            fmt.Println(utf8.RuneCountInString(str))
            
          • 方法二:

          • 将字符串转换为 rune 类型数据在计算长度

          • str = "hello 世界"
            fmt.Println("rune", len([]rune(str)))
            

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
vscode安装go相关插件失败或goget安装第三方包失败发布时间:2022-07-10
下一篇:
解决go-micro与其它gRPC框架之间的通信问题发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap