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)))
            


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM