筆記
-
知識點:
-
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)))
-
-
-
-