Golong---數據類型

類型轉換

不同類型間無法進行運算,go中不會進行自動類型轉換,需要手動進行類型轉換

示例1,不同類型間進行運算

package main

import "fmt"

func main()  {
	//類型轉換
	var intA  int	 = 2
	var uintB uint = 3
	fmt.Println(intA + uintB)
}

標準輸出:

command-line-arguments
.\int.go:10:19: invalid operation: intA + uintB (mismatched types int and uint)

示例2,類型轉換

package main

import "fmt"

func main()  {
	//類型轉換
	var intA  int	 = 2
	var uintB uint = 3
	//int轉uint
	fmt.Println(uint(intA) + uintB)
	//uint轉int
	fmt.Println(intA + int(uintB))
}

標準輸出:

5
5

溢出:

  • 類型轉換時,由16位都轉爲8位可能會出現溢出

示例3,溢出

package main

import "fmt"

func main()  {
	//溢出
	intC := 0XFFFF
	fmt.Println(intC, int8(intC), uint8(intC))
}

標準輸出:

65535 -1 255

printf佔位符

byte和rune類型

  • uint8 類型,或者叫 byte 型,代表了 ASCII 碼的一個字符。
  • rune 類型,代表一個 UTF-8 字符,當需要處理中文、日文或者其他複合字符時,則需要用到 rune 類型。rune 類型等價於 int32 類型。

示例4,byte和rune類型

package main

import "fmt"

func main()  {
	//定義一個byte類型
	var A byte = 'A'
	//定義一個rune類型
	var B rune = '中'
	var C int32 = '中'

	//int轉uint
	fmt.Println(A, B, C)
}

標準輸出:

65 20013 20013

%c:字符串類型
%q:單引號圍繞的字符字面值,由Go語法安全地轉義 Printf("%q", 0x4E2D) ‘中’
%U:Unicode格式(碼減)
%x 十六進制表示,字母形式爲小寫 a-f Printf("%x", 13) d
%X 十六進制表示,字母形式爲大寫 A-F Printf("%x", 13) D

示例5

package main

import "fmt"

func main()  {
	//定義一個byte類型
	var a byte = 'A'
	//定義一個rune類型
	var b rune = '中'

	age := 20
	//int轉uint
	fmt.Printf("%T, %d, %b, %o, %x\n", age, age, age, age, age)
	fmt.Printf("%T, %c\n",a, a)
	fmt.Printf("%T, %q, %U\n",b ,b ,b)
}

標準輸出:

int, 20, 10100, 24, 14
uint8, A
int32, '中', U+4E2D

佔位

fmt.Printf("%-5d\n",age)
//左對齊
fmt.Printf("%5d\n",age)
//右對齊
package main

import "fmt"

func main()  {
	age := 20

	//格式化對齊
	fmt.Printf("%-5d\n",age)
	//左對齊
	fmt.Printf("%5d\n",age)
	//右對齊
}

標準輸出:

20
   20
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章