go語言 bool類型的使用操作

我就廢話不多說瞭,大傢還是直接看代碼吧~

// 1 聲明類型,沒有初始化,零值(false)
var a bool
a = true
fmt.Println("a = ", a) 
 
// 2 自動推導類型
var b = false
fmt.Println("b = ", b) 
 
c := false
fmt.Println("c = ", c)

補充:Go語言基礎:變量,常量,Boolean,字符串,iota枚舉

定義變量

格式:var 變量名 變量類型

Go變量聲明很奇怪,把類型放在變量名後面,這點與我們常用的C、JAVA等不一樣,沒辦法,得習慣。Go對於已聲明但未使用的變量會在編譯階段報錯,要求好嚴格,但的確應該支持。

單個變量的聲明和賦值

var a int //變量的聲明
a = 123 //變量的賦值
var b int = 123 //變量的聲明,同時賦值
var c = 321 //變量的聲明,同時賦值,省略變量類型,由編譯器推斷,這裡認為是int
var s = "中國" //這裡編譯器推斷是字符串string類型
d := 456 //變量聲明與賦值的最簡方法,這種方法隻能用在函數內部

上面是常用的變量聲明和賦值方法,一般常用的應該是var 變量名 = 賦值。

需要註意的是,全局變量一般都是通過var方式來定義,函數局部變量采用:=方式來定義。

多個變量的聲明和賦值

var a, b, c int //變量的聲明
a = 1 //變量的賦值
b = 2
c = 3
var a, b, c int = 1, 2, 3 //變量的聲明,同時賦值  是不是覺得很別扭,搞不懂go為啥要這麼定義他
var a, b, c = 1, 2, 3 //一般采用此方法來定義
_, b := 2, 3 // _(下劃線)是個特殊的變量名,任何賦予它的值都會被丟棄。唉,既然會被丟棄,還用它幹啥呢。

常量

在變量前加const關鍵字,這個變量就變成瞭一個常量

定義變量組

Go語言中,同時聲明多個變量、常量或導入多個包時,可采用分組的方式聲明。這點很不錯,比其它語言要好。比如導入多個包時:

import "fmt"
import "os"
//可以用分組寫成如下形式:
import(
   "fmt"
   "os"                                                             
 )

聲明多個變量:

var a int
var b = "123"
var(
   a int
   b = "123"
)

聲明多個常量:

const pi = 3.1415
const prefix = "Go"
const(
   pi = 3.1415
   prefix = "Go"
)

常用的基礎類型

Boolean

Go語言中,佈爾(bool)類型的值隻能是true或false

數值類型

Go裡面的int跟uint的數據范圍是根據具體的平臺是32位還是64位來決定的。Go裡面也有直接定義好的位數類型rune , int8 , int16 , int32 , int64 和 byte , uint8 , uint16 , uint32 , uint64 。其中 rune 是 int32 的別稱, byte 是 uint8 的別稱。

需要註意:這些類型之間不允許相互賦值或操作,不然編譯器會報錯。比如:

var a int8 = 4

var c int32 = a

編譯的時候會報錯:(type int8) as type int32 in assignment。另外,盡管int的長度是32bit,但是int與int32也是不可以互用的。

復數

Go語言支持復數,它的默認類型是 complex128 (64 位實數+64 位虛數)。如果需要小一些的,也有 complex64 (32 位實數+32 位虛數)。復數的形式為 RE + IMi ,其中 RE 是實數部分, IM 是虛數部分,而最後的 i 是虛數單位。

var c complex64 = 5+5i

fmt.Printf(c)

輸出:(5+5i)

搞不明白這個復數能幹什麼用啊抓狂抓狂抓狂

字符串

Go中的字符串都是采用UTF-8字符集編碼。字符串是用一對” “或反引號來定義的,類型為string。Go語言中,字符串是不可變的。如果真要修改怎麼辦呢?

s := "hello"
c := []byte(s) // 將字符串 s 轉換為 []byte 類型
c[0] = 'c'
s2 := string(c) // 再轉換回 string 類型
fmt.Printf("%s\n", s2)

Go中可以使用+連接兩個字符串,這一點跟java很像。

聲明多行的字符串怎麼辦?通過反引號來聲明,比如:

var s = `hello

world`

輸出:

hello

world

iota枚舉

關鍵詞iota用來聲明枚舉時會用到,默認開始值為0,每調用一次加1;隻能在常量表達式中使用;每遇到const,iota重置為0。看幾個例子:

const a = iota // a=0
const (
 b = iota   //b=0
 c      //c=1
)
//特別註意這種情況,雖然,兩個iota中間隔著j=3.14,但是iota依然會加1下去,所以k的值為2
const (
  i = iota
  j = 3.14
  k = iota
  l
) 

當遇到 _(下劃線) 時,可以跳過不用它,但是值依然會加1,比如:

type AudioOutput int
const (
  OutMute AudioOutput = iota // 0
  OutMono          // 1
  OutStereo         // 2
  _
  _
  OutSurround        // 5
)

Go程序設計的一些規則

大寫字母開頭的變量是可導出的,也就是其它包可以讀取的,是公用變量;小寫字母開頭的就是不可導出的,是私有變量。大寫字母開頭的函數也是一樣,相當於 class 中的帶 public 關鍵詞的公有函數;小寫字母開頭的就是有 private 關鍵詞的私有函數。

總之一句話,大寫字母開頭的是public,小寫字母開頭的是private

這些規則好不習慣啊,但也隻能接受。

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。

推薦閱讀: