golang數據類型與轉換


一、數值型int(默認值 0)

int 整數 32位系統占4個字節(-2^31~2^31-1)、64位系統占8個字節(-2^63~2^63-1)
uint 32位系統占4個字節(0~2^32-1)、64位系統占8個字節(0-2^64-1)
rune 范圍(-2^31~2^31-1) 等價int32,表示一個Unicode碼
byte 范圍(0~255),當要存儲字符時選用byte

1、int的有符號類型

 

int8 有符號 8 位整型 (-128 到 127)
int16 有符號 16 位整型 (-32768 到 32767)
int32 有符號 32 位整型 (-2147483648 到 2147483647)
int64 有符號 64 位整型 (-9223372036854775808 到 9223372036854775807)

2、int的無符號類型

uint8 無符號 8 位整型 (0 到 255)
uint16 無符號 16 位整型 (0 到 65535)
uint32 無符號 32 位整型 (0 到 4294967295)
uint64 無符號 64 位整型 (0 到 18446744073709551615)

二、浮點型float(默認值 0)

1、float32 占用4個字節(單精度) 范圍(-3.403E38~3.403E38)
2、float64 占用8個字節(雙精度) 范圍 (-1798E308~1.798E308) float64精度高於float32

 

三、字符型(默認值 "")

字符型存儲與讀取方式
存儲:字符->對應碼值->二進制->存儲
讀取:二進制->碼值->字符->讀取

如:

var x byte = 'a'
var y int = '夠'  //utf-8編碼Unicode編碼10進制結果
fmt.Println(x,y)
結果:
97 22815
賦值字符和int的運算
var x = 10 + 'a'
fmt.Println(x)
結果:
107

  

四、布爾值bool(占用一個字節)(默認值 false)

golang不可以用0或非0來替代false和true

1、true 真
2、false 假

五、字符串string(默認值 "")

在go中字符串一旦賦值,字符串就不可變
"" 雙引號擴起來的字符串能識別轉義符號
`` 反引號不識別轉義符號,把字符串原生形式輸出
字符串拼接方式

如:

var x  =  "hello" + "world"
多個換行相加
var y = "hello" + "world" +
"xxx" +
"yyy"

  

六、指針

指針就是一個指針變量指向了一個值的內存地址。

獲取變量地址使用&
如:
var i int = 10
&i /為i變量值的內存地址
指針例子:

var a int = 10
fmt.Println(&a) //獲取a變量值存儲在內存中的地址
var ptr *int = &a //ptr是指針變量名,*int代表int類型的指針(如*string為string類型的指針等),ptr的值是a的內存地址
fmt.Printf("%v\n", ptr)
fmt.Printf("ptr指向的值 %v\n", *ptr) //*ptr就是指向的值

結果:
0xc00005a058
0xc00005a058
ptr指向的值 10

  

 

七、golang字符類型相互轉換

1、int與float之間轉換

var x int = 10
var a1 float32 = float32(x)
fmt.Printf("Type: %T Value: %v\n", x, x)
fmt.Printf("Type: %T Value: %v\n", a1, a1)

結果:
Type: int Value: 10
Type: float32 Value: 10

  

2、string與int轉換

方式一、使用fmt.Sprintf 轉換

var x int = 10
var str string
str = fmt.Sprintf("%d",x)
fmt.Printf("Type: %T Value: %v\n", str, str)
結果:
Type: string Value: 10

  

方式二、使用strconv

 

package main
import (
	"fmt"
	"strconv"
	)
func main(){
        var str string
	str_b := "false"
	var b bool
	var i int = 109
	var str_s string = "333"
	var in int64 
	var f1 float64
	var str_f string = "231.32124"
	str = strconv.Itoa(i)  //string
	b,_ = strconv.ParseBool(str_b) //會返回2個值
	in,_ = strconv.ParseInt(str_s,10,64) //轉成10進制的,0轉為int,8代表int8,32,64等
	f1,_ = strconv.ParseFloat(str_f,64) //轉成float64
	fmt.Printf("%T %v\n",str,str)
	fmt.Printf("%T %v\n",b,b)
	fmt.Printf("%T %v\n",in,in)
	fmt.Printf("%T %v\n",f1,f1)

}


###結果
string 109
bool false
int64 333
float64 231.32124

  


免責聲明!

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



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