Golang學(xué)習(xí)筆記2——類型與變量

1.基本類型

類型 長(zhǎng)度 默認(rèn)值 說(shuō)明
bool 1 false 不能使用0、1代替false、true
byte 1 0 等同于uint8
int、uint 4、8 0 默認(rèn)整數(shù)類型,根據(jù)平臺(tái),32或64位
int8、uint8 1 0 -128 ~ 127,0 ~ 255
int16、uint16 2 0 -32768 ~ 32767,0 ~ 65535
int32、uint32 4 0 -(2^32 / 2) ~ (2^32 / 2 - 1),0 ~ 2^32
int64、uint64 8 0 -(2^64 / 2) ~ (2^64 / 2 - 1),0 ~ 2^64
float32 4 0.0
float64 8 0.0 默認(rèn)浮點(diǎn)數(shù)類型
complex64 8
complex128 16
rune 4 0 Unicode Code Point, int32
uintptr 4,8 0 足以存儲(chǔ)指針的uint
string "" 字符串,默認(rèn)值為空字符串,而非NULL
array 數(shù)組
struct 結(jié)構(gòu)體
function nil 函數(shù)
interface nil 接口
map nil 字典,引用類型
slice nil 切片,引用類型
channel nil 通道,引用類型

2.類型別名

設(shè)置類型別名后可以讓代碼可讀性更強(qiáng),一目了然這個(gè)變量做什么用的:

type (
    ByteSize int64
)

3.變量的聲明與賦值

  • 變量的聲明: var a int
  • 變量的賦值:a = 123
  • 聲明并賦值: var a int = 123 (此時(shí)若省略類型,則編譯器根據(jù)值自動(dòng)推導(dǎo)類型)
  • 多個(gè)變量的聲明

并行方式(可以省略類型,由值推導(dǎo))

var a, b, c, int = 1, 2, 3

函數(shù)內(nèi)部聲明變量的簡(jiǎn)寫(xiě)形式:

funciont main(){
    a:= 1
}

函數(shù)多個(gè)返回值時(shí)可以用"_"忽略返回值

 a, _, c, d := 1, 3, 4

4.類型轉(zhuǎn)換

  • go中不存在隱式轉(zhuǎn)換,所有類型轉(zhuǎn)換必須顯示聲明
  • 轉(zhuǎn)換只能發(fā)生在兩種相互兼容的類型之間
  • 類型轉(zhuǎn)換的格式:
var a float32 = 1.1
b := int(a)
  • 語(yǔ)法歧義

如果轉(zhuǎn)換的目標(biāo)是指針、單向通道或沒(méi)有返回值的函數(shù)類型,那么必須使用括號(hào),以避免造成語(yǔ)法分解錯(cuò)誤。

fun main() {
    x := 100
    p := *int(&x)   //錯(cuò)誤:cannot convert &x (type *int) to type int
                    //    invalid indirect of int(&x) (type int)
    fmt.Println(p)
}

正確的做法是用括號(hào),讓編譯器將*int解析未指針類型。

(*int)(p)
(<-chan int)(c)
(func())(x)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容