文章目錄
(一)變量的定義
變量的定義可以使用關鍵字var進行定義,寫法是
var 變量 類型
,比如var i int
定義i爲int類型的變量
1,定義並輸出變量實例演示
定義爲int類型,並沒有給予具體的數值時,輸出爲 0
package main
import "fmt"
func main() {
var i int
fmt.Println(i)
}
2,定義但未指定數值類型時的情況
定義爲bool型,但是在main函數中沒有給予具體的類型定義時就會輸出false
在這裏的 i 在main函數中被給予了數值類型了,但是x,y沒有被給予數值類型,輸出的時候x和y均爲false
package main
import "fmt"
var i, x, y bool
func main() {
var i int
fmt.Println(i, x, y)
}
3,定義的變量必須被使用
定義的變量必須被使用,否則會報錯
package main
import "fmt"
func main() {
var i int
fmt.Println()
}
4,定義變量不寫類型
如果定義了變量不寫類型,變量被初始化的時候該變量的類型會被進行隱式轉換
這裏的變量被隱式轉換爲了string類型 (使用fmt.Printf()進行打印,%T可以輸出變量類型)
package main
import "fmt"
var a = "今天天氣很好!"
func main() {
fmt.Printf("該變量的類型爲:%T ;該變量的值爲:%v", a, a)
}
(二)變量的賦值
在Go中變量的賦值有兩種符號可以使用 = 和 :=
= 符號賦值的情況
1,單個變量賦值
package main
import "fmt"
func main(){
var a int = 1
fmt.Println("a的值爲:",a)
}
2,多個變量賦值
package main
import "fmt"
func main() {
var a, b int = 1, 3001
var x, y, z = "我是X", 30, true
fmt.Println(a, b, x, y, z)
}
:= 符號賦值的情況
:= 用於在函數中對變量進行賦值,是一種簡短聲明的語法,類型可以不寫,因爲會進行隱式轉換,使用:= 賦值的變量會被自動賦予類型
package main
import main
func main(){
a := "今天天氣很好!"
fmt.Println(a)
}
警告!如果這種變量短聲明使用在函數外面會報錯,:= 的寫法必須位於函數內部
相反的,= 定義的變量可以聲明在函數外面且正常輸出
(三)基本類型
Go語言的基本類型有
基本類型 |
---|
bool |
string |
int, int8 ,uint16 ,uint32 ,uint64 ,uintptr |
byte (uint8的別名) |
rune (int32的別名) |
float32 , float64 |
complex64 ,complex128 |
下面這個程序是Golang官網的一個案例,我們來看下輸出了啥
package main
import (
"fmt"
"math/cmplx"
)
var (
ToBe bool = false
MaxInt uint64 = 1<<64 - 1
z complex128 = cmplx.Sqrt(-5 + 12i)
)
func main() {
fmt.Printf("Type: %T Value: %v\n", ToBe, ToBe)
fmt.Printf("Type: %T Value: %v\n", MaxInt, MaxInt)
fmt.Printf("Type: %T Value: %v\n", z, z)
}
注意到上面的變量的定義沒有,可以進行分步定義(因式分解factored),寫到塊裏面,比如這段
var (
ToBe bool = false
MaxInt uint64 = 1<<64 - 1
z complex128 = cmplx.Sqrt(-5 + 12i)
)
傳統定義是
var ToBe bool = false
var MaxInt uint64 = 1<<64 - 1
var z complex128 = cmplx.Sqrt(-5 + 12i)
int,uint和uintptr類型在32位系統上通常爲32位寬,在64位系統上爲64位寬。 當你需要整數值時,應該使用int,除非有特殊原因要使用大小或無符號整數類型。
(四)0 值變量 (zero variable)
變量的初始化值如果沒有給予一個值,將會被自動賦予 0 值 , 字符串會變成空字符串 " " , bool型會顯示false
package main
import "fmt"
func main() {
var x int
var y float32
var z string
var a bool
fmt.Printf("%v , %v , %q , %v", x, y, z, a)
}
(五)類型轉換
類型轉換的寫法是 T(v) ,T代表類型,v表示遍歷,比如:int(a)
將a轉化爲整型
package main
import "fmt"
func main() {
var a float32 = 12312.89
fmt.Printf("改變前:a is %v and this type is %T \n", a, a)
fmt.Printf("改變後:a is %v and this type is %T", int(a), int(a))
}
(六)類型推斷
被定義了類型的變量賦值給另外一個變量的時候,會將類型一併繼承下去
package main
import "fmt"
func main(){
var b float64 = 78.1200
a := b
fmt.Printf("a 的值是%v ,類型是 %T",a,a)
}
(七)常量 (constant)
常量的定義使用關鍵詞 const 定義
package main
import "fmt"
const str1 = "今天天氣同樣的美好!"
func main() {
const str2 = "today same wonderful like yesterday !"
fmt.Println("今天天氣如何?// ", str1, "\nHow about today ? //", str2)
}
無類型數值常量的類型定義取決於該常量的使用
package main
import "fmt"
func main(){
const(
a = 1010
b = 12
)
fmt.Printf("a的類型爲:%T",a*10.12)
fmt.Printf("a的類型爲:%T",a*1000)
}