資料型別轉換的格式
1.T(表示式)
- 採用資料型別前置加括號的方式進行型別轉換。T表示要轉換的型別;表示式包括變數、數值、函式返回值等
- 型別轉換時,需要考慮採用兩種型別之間的關係和範圍,是否會發生數值截斷
- 布林型無法與其他型別轉換
2.float與int之間的轉換
- float轉int會導致精度損失
3.int轉string
- 相當於是 byte 或 rune 轉string
- 該int 值是ASCII嗎的編號或者Unicode字符集的編號,轉成 string 就是講根據字符集,將對應編號的字元查詢出來
- 當該值超過Unicode編號的返回,則轉成的字串顯示為亂碼
- 例如,當19968轉string,就是“一”
【備註】
ASCII字符集中數字的10進位制範圍是 [30 - 39]
ASCII字符集中大寫字母的10進位制範圍是 [65 - 90]
ASCII字符集中小寫字母的10進位制範圍是 [97 - 122]
Unicode字符集中漢字的範圍是 [4e00 - 9fa5],10進位制的範圍是[19968 - 40869]
package main
import "fmt"
func main() {
/* 語文成績是 90,英語成績是 80.5,計算平均值 */
chinese := 90
english := 80.5
// float轉int
avg := (chinese + int(english)) / 2
fmt.Println("平均值:" , avg)
// 平均值: 85
// int轉float
avg2 := (float64(chinese) + english) / 2
fmt.Println("平均值2:" , avg2)
// 平均值2: 85.25
// 布林型不能轉換為其他
// flag := true
// int(flag)
// 字串不能轉為int
// str := "Joe"
// int(str)
result := string(chinese)
fmt.Println("語文成績轉string,結果為:", result)
// 語文成績轉string,結果為: Z
x := 'Z'
fmt.Println("字元Z轉string,結果為:" , string(x))
// 字元Z轉string,結果為: Z
X := '一'
fmt.Println("字元 一 轉string,結果為:" , string(X))
// 字元 一 轉string,結果為: 一
XX := 19968
fmt.Println("數值19968 轉string,結果為:" , string(XX))
// 數值19968 轉string,結果為: 一
}
複製程式碼
常量宣告方式
1.相對於變數,常量是恆定不變的值,例如圓周率
- 常量是一個簡單值的識別符號,在程式執行時,不會被修改
2.常量中的資料型別只可以是布林型、數字型(整數型、浮點型和複數)和字串型
3.常量的定義格式:
- const 識別符號 [型別] = 值
- 可以省略型別說明符 [type],因為編譯器可以根據變數的值來自動推斷其型別
- 顯示型別定義: const B string = "Joe"
- 隱式型別定義: const C = "Joe"
4.多個相同型別的宣告可以簡寫為:
- const WIDTH , HEIGHT = value1, value2
5.常量定義未被使用,不會再編譯時出錯
常量用於列舉(常量組)
例如如下格式:
const (
Unkonwn = 0
Female = 1
Male = 2
)
複製程式碼
數字0、1、2分別表示未知性別、女性、男性
常量組中如果不指定型別和初始值,則與上一行非空常量的值相同
const (
a = 10
b
c
)
複製程式碼
列印 a b c ,輸出 :10 10 10
iota
1.iota ,特殊常量值,是一個系統定義的可以被編譯器修改的常量值。iota只能出現在常量中。
2.在每一個const 關鍵字出現時,被重置為0,然後每出現一個常量,iota所代表的數值會自動增加1。iota可以理解成常量組中的常量的計數器,不論該常量的值是什麼,只要有一個常量,那麼iota就加1
3.iota可以被用作列舉值
package main
import "fmt"
func main() {
const (
L = iota
M = iota
N = iota
)
fmt.Println(L, M, N)
// 輸出:0 1 2
const (
L1 = iota
M1
N1
)
fmt.Println(L1, M1, N1)
// 輸出:0 1 2
const (
L2 = "Joe"
M2 = iota
N2
)
fmt.Println(L2, M2, N2)
// 輸出:Joe 1 2
const (
i = 1 << iota // 1 * 2^iota
j = 3 << iota // 3 * 2^iota
k
l
)
fmt.Println(i, j, k ,l)
// 輸出:1 6 12 24
const (
a1 = '一'
b1
c1 = iota
d1
)
fmt.Println(a1, b1, c1 ,d1)
// 輸出:19968 19968 2 3
const name = iota
fmt.Println("name=", name)
// 輸出:name= 0
}
複製程式碼
歡迎關注我的公眾號~ 搜尋公眾號: 翻身碼農把歌唱 或者 掃描下方二維碼: