zoukankan      html  css  js  c++  java
  • go语言初始化结构体的几种方式

    笔记

    • 知识点:

      • 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)))
              
  • 相关阅读:
    Linux(CentOS 7)命令行模式安装VMware Tools 详解
    最全面的移动APP测试点
    利用Fiddler编写Jmeter接口测试
    LeetCode | TwoSum
    Python
    Django
    浅谈web网站架构演变过程
    Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解
    Web服务器之Nginx详解(操作部分)
    Web服务器之Nginx详解(理论部分)
  • 原文地址:https://www.cnblogs.com/jcjc/p/12458515.html
Copyright © 2011-2022 走看看