Go語言基礎——數據類型和運算符

Go語言基礎——數據類型和運算符

基礎數據類型

  • 在GO語言中,還有很多其它的類型,如下:

在這裏插入圖片描述

布爾類型
  • 布爾類型的變量取值要麼是真(true),要麼是假(false),用bool關鍵字來進行定義。

例:

package main

import "fmt"

func main() {
	/* var a bool
	//bool類型一般用於條件判斷
	a = true
	fmt.Println(a)  */

	//自動推導類型創建bool類型變量
	a := true
	//fmt.Println(a)
	fmt.Printf("%T\n", a)

	b := 10
	fmt.Printf("%T\n", b)
}
  • %t是一個佔位符,表示輸出一個變量對應的數據類型
整型
var a int = 10
b := 10
  • int類型會根據操作系統位數不同在內存中佔的字節也不同
  • 在64位操作系統下定義整型變量:int64 64(單位:位)
浮點型
  • 浮點型數據分爲:單精度浮點型 float32(小數位數爲7位),雙精度浮點型 float64(小數位數爲15位)
  • float64比float32更精確
  • 通過自動推導類型創建的浮點型變量,默認類型我float64

例:

func main() {

	var a float64 = 1234.456
	//保留六位小數數據更精準
	fmt.Printf("%f\n", a)

}

字符類型
  • byte字符類型,同時也是uint8的別名
func main() {

	var a byte = 'a'
	//所以的字符都對應ASCII中的整型數據
	//fmt.Println(a)
	fmt.Printf("%c",a)
}
  • %c是一個佔位符,表示打印輸出一個字符
  • 計算機不能直接存儲字符類型,只能轉成數字存儲。
  • 計算機是根據’ASCII’碼來存儲。

將小寫字母轉換成大寫字母輸出

func main() {

	var a byte = 'a'
	fmt.Printf("%c",a-32)
}
轉義字符
  • \n換行
  • \"表示一個英文半角的雙引號
  • \0對應ASCII值爲0,用於字符串的結束標準
  • \t表示一個tab鍵的空格,一次跳8個空格
字符串類型
  • 用單引號括起來的單個字符是字符類型,用雙引號括起來的字符是字符串類型。

例:

func main() {

	var a string = "blank"
	fmt.Printf("%s", a)
}

  • len函數:用來計算字符串字符個數,不包括\0,返回值爲int類型

例:

func main() {

	a := "hello world"
	count := len(a)
	fmt.Println(count)
}

注:在go語言中,一個漢字佔3個字節,爲了和linux進行統一處理

  • 字符串連接

例:

func main() {

	str1 := "CSDN:"
	str2 := "DTRblank"
	str3 := str1 + str2
	fmt.Println(str3)
}

fmt輸出輸入

  • go語言中的格式化輸入輸出:

在這裏插入圖片描述

  • 二進制不能在go語言中直接表示
  • 八進制數據是以0開頭,最大值爲7
  • 十六進制數據是以0x開頭

常量

  • 常量存儲一直不會發生變化的數據
  • 常量可以參與程序的計算
func main() {
	//常量的定義
	const a int = 10
	b := a + 10
	fmt.Println(a)
}
  • 常量不允許左值賦值
a = a + 10  //err
a = 100  //err
  • go語言中常量的地址不允許訪問
  • 常量必須定義

例:

package main

import "fmt"

func main() {
	//計算圓的面積和周長
	// PI 3.14
	const PI float64 = 3.14
	var r float64
	fmt.Scan(&r)

	s := PI * r * r
	l := 2 * PI * r

	fmt.Printf("面積:%.2f\n", s)
	fmt.Printf("面積:%.2f\n", l)
}

iota枚舉

  • 常量聲明可以使用iota常量生成器初始化,它用於生成一組以相似規則初始化的常量,但是不用每行都寫一遍初始化表達式。
  • 在定義iota枚舉時,可以自定義賦值
func main() {
	//iota枚舉
	const(
		a = iota  //0
	)
	fmt.Printf("a=%d\n",a)

}

注:在一個const聲明語句中,在第一個聲明的常量所在的行,iota將會被置爲0,然後在每一個有常量聲明的行加一。

運算符

算術運算符

在這裏插入圖片描述
例:

func main() {
	a := 10
	a++  //11

	fmt.Println(a)
}
  • a++ = a + 1

注:
1.取餘運算符除數不能爲0
2.取餘運算符不能對浮點型使用
3.GO語言中沒有前自增,這是與其它編程語言不同的地方。
4.自增自減可以對浮點型進行運算,但是不能對常量進行自增自減運算
5.自增自減不能出現在表達式中。二義性,在不同操作系統中運算方式不同,結果可能會產生偏差。

例:

a = a ++  + a--   //err
類型轉換
  • 數據類型(變量)
  • 數據類型(表達式)

例:

func main() {
	a, b, c := 0, 0, 0
	fmt.Scan(&a, &b, &c)

	sum := a + b + c
	fmt.Println(sum)
	fmt.Printf("%.2f", float64(sum)/3)
}
  • int8 --> int16 --> int32 -->int64
  • float32–> float64
  • 在類型轉換時建議低類型轉成高類型,保證數據精度
  • 高類型轉換低類型,可能會丟失精度,數據溢出,符號發生變化

注:Go語言中不允許隱式轉換,所有類型轉換必須顯式聲明(強制轉換),而且轉換隻能發生在兩種相互兼容的類型之間

例:

func main() {
	var ch byte = 79
	//var a int = ch //err
	var a int = int(ch)
}
賦值運算符
  • 賦值運算符 =
  • =號是賦值運算符,不是數學義意上的相等
    在這裏插入圖片描述
關係運算符
  • 關係運算的結果是布爾類型的。
  • bool值只有兩個。真:true,假:false
  • GO語言中常見的關係運算符如下:
    在這裏插入圖片描述
邏輯運算符
  • 有邏輯運算符連接的表達式叫做邏輯表達式
  • 邏輯表達式的結果同樣也是bool類型
  • 常見的邏輯運算符如下:
    在這裏插入圖片描述
  • 邏輯與 && (表達式1&&表達式2) 同真爲真,其餘爲假
    在這裏插入圖片描述
  • 邏輯或 ||(表達式1&&表達式2) 同假爲假,其餘爲真
    在這裏插入圖片描述
  • 邏輯非 ! (表達式1&&表達式2) 非真爲假,非假爲真
    在這裏插入圖片描述
    注:邏輯與的優先級高於邏輯或
其他運算符

在這裏插入圖片描述

運算符優先級
  • 一元運算符(一些只需要一個操作數的運算符稱爲一元運算符(或單目運算符)。)擁有最高的優先級,二元運算符的運算方向均是從左至右。
  • 下表列出了所有運算符以及它們的優先級,由上至下代表優先級由高到低:
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章