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 //變量聲明與賦值的最簡方法,這種方法只能用在函數(shù)內部
上面是常用的變量聲明和賦值方法,一般常用的應該是var 變量名 = 賦值。
需要注意的是,全局變量一般都是通過var方式來定義,函數(shù)局部變量采用:=方式來定義。
多個變量的聲明和賦值
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
數(shù)值類型
Go里面的int跟uint的數(shù)據(jù)范圍是根據(jù)具體的平臺是32位還是64位來決定的。Go里面也有直接定義好的位數(shù)類型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也是不可以互用的。
復數(shù)
Go語言支持復數(shù),它的默認類型是 complex128 (64 位實數(shù)+64 位虛數(shù))。如果需要小一些的,也有 complex64 (32 位實數(shù)+32 位虛數(shù))。復數(shù)的形式為 RE + IMi ,其中 RE 是實數(shù)部分, IM 是虛數(shù)部分,而最后的 i 是虛數(shù)單位。
var c complex64 = 5+5i
fmt.Printf(c)
輸出:(5+5i)
搞不明白這個復數(shù)能干什么用啊抓狂抓狂抓狂
字符串
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程序設計的一些規(guī)則
大寫字母開頭的變量是可導出的,也就是其它包可以讀取的,是公用變量;小寫字母開頭的就是不可導出的,是私有變量。大寫字母開頭的函數(shù)也是一樣,相當于 class 中的帶 public 關鍵詞的公有函數(shù);小寫字母開頭的就是有 private 關鍵詞的私有函數(shù)。
總之一句話,大寫字母開頭的是public,小寫字母開頭的是private
這些規(guī)則好不習慣啊,但也只能接受。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關文章
go HTTP2 的頭部壓縮算法hpack實現(xiàn)詳解
這篇文章主要為大家介紹了go HTTP2 的頭部壓縮算法hpack實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-10-10關于golang高并發(fā)的實現(xiàn)與注意事項說明
這篇文章主要介紹了關于golang高并發(fā)的實現(xiàn)與注意事項說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-05-05淺談Golang中創(chuàng)建一個簡單的服務器的方法
這篇文章主要介紹了淺談Golang中創(chuàng)建一個簡單的服務器的方法,golang中的net/http包對網絡的支持非常好,這樣會讓我們比較容易的建立起一個相對簡單的服務器,有一定的參考價值,感興趣的小伙伴們可以參考一下2018-06-06Go?CSV包實現(xiàn)結構體和csv內容互轉工具詳解
這篇文章主要介紹了Go?CSV包實現(xiàn)結構體和csv內容互轉工具詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-03-03