數據類型
類型 | 描述 | 範圍 |
---|---|---|
uint8 | 無符號 8 位整型 | 0 到 255 |
uint16 | 無符號 16 位整型 | 0 到 65535 |
uint32 | 無符號 32 位整型 | 0 到 4294967295 |
uint64 | 無符號 64 位整型 | 0 到 18446744073709551615 |
int8 | 有符號 8 位整型 | -128 到 127 |
int16 | 有符號 16 位整型 | -32768 到 32767 |
int32 | 有符號 32 位整型 | -2147483648 到 2147483647 |
int64 | 有符號 64 位整型 | -9223372036854775808 到 9223372036854775807 |
float32 | IEEE-754 | 32位浮點型數 |
float64 | IEEE-754 | 64位浮點型數 |
complex64 | 複數 | 32 位實數和虛數 |
complex128 | 複數 | 64 位實數和虛數 |
byte | 類似 uint8 | - |
rune | 類似 int32 | - |
uint | 平臺相關 | 32 或 64 位 |
int | 平臺相關 | 32 或 64 位 |
uintptr | 無符號整型,用於存放一個指針 | - |
1.變量的定義
package main
import "fmt"
func main() {
// 1 定義一個變量不初始化
var n1 int
n1 = 1
// 定義一個變量同時初始化
var n2 string = "2"
// 定義變量同時初始化的簡寫
var n3 = 3
// 定義多個變量
var n4, n5 = 4, "5"
// 只可以在函數中定義變量的方法
n6 := 6
fmt.Println(n1, n2, n3, n4, n5, n6)
}
輸出
1 2 3 4 5 6
2.基本數據類型轉換
package main
import (
"fmt"
"strconv"
)
func main() {
// 基本數據類型相互轉換
var i int = 100
var n1 float32 = float32(i)
// 被轉換的是變量存儲的數值,變量本身數據類型並沒有變化(i int, n1 float32)
fmt.Printf("1.i=%v %T n1=%v %T\n", i, i, n1, n1)
// 轉換時需要注意類型範圍,如果大範圍轉換爲小範圍則輸出結果按溢出處理
var num1 int64 = 9999999999
var num2 int8 = int8(num1)
fmt.Printf("2.i=%v %T n1=%v %T\n", num1, num1, num2, num2)
// 基本數據類型轉string 使用fmt包轉換
var num3 int = 99
var num4 float32 = 11.11
var b1 bool = true
var str string
str = fmt.Sprint(num3)
fmt.Printf("3.int轉string: num3=%v %T; str=%v %T\n", num3, num3, str, str)
str = fmt.Sprint(num4)
fmt.Printf("4.float32轉string: num3=%v %T; str=%v %T\n", num4, num4, str, str)
str = fmt.Sprint(b1)
fmt.Printf("5.bool轉string: num3=%v %T; str=%v %T\n", b1, b1, str, str)
// 使用strconv包轉換
str = strconv.FormatInt(int64(num3), 10)
fmt.Printf("6.int轉string: num3=%v %T; str=%v %T\n", num3, num3, str, str)
// float64, fmt 輸出格式, prec 精度 float64
str = strconv.FormatFloat(float64(num4), 'f', 2, 64)
fmt.Printf("7.float32轉string: num3=%v %T; str=%v %T\n", num4, num4, str, str)
str = strconv.FormatBool(b1)
fmt.Printf("8.bool轉string: num3=%v %T; str=%v %T\n", b1, b1, str, str)
//使用strconv包 string 轉化基本類型
var str1 string = "10"
var str2 string = "true"
var str3 string = "3.1415926"
// base 進制,bitSize int8,int32,int64
num6, _ := strconv.ParseInt(str1, 10, 64)
fmt.Printf("9.str轉換int64:str=%v %T; num6=%v %T\n", str1, str1, num6, num6)
b2, _ := strconv.ParseBool(str2)
fmt.Printf("10.str轉換bool:str=%v %T; num6=%v %T\n", str2, str2, b2, b2)
f1, _ := strconv.ParseFloat(str3, 64)
fmt.Printf("11.str轉換float:str=%v %T; num6=%v %T\n", str3, str3, f1, f1)
}
輸出
1.i=100 int n1=100 float32
2.i=9999999999 int64 n1=-1 int8
3.int轉string: num3=99 int; str=99 string
4.float32轉string: num3=11.11 float32; str=11.11 string
5.bool轉string: num3=true bool; str=true string
6.int轉string: num3=99 int; str=99 string
7.float32轉string: num3=11.11 float32; str=11.11 string
8.bool轉string: num3=true bool; str=true string
9.str轉換int64:str=10 string; num6=10 int64
10.str轉換bool:str=true string; num6=true bool
11.str轉換float:str=3.1415926 string; num6=3.1415926 float64