Golang學習筆記2——類型與變數

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

1.基本類型

類型 長度 預設值 說明
bool 1 false 不能使用0、1代替false、true
byte 1 0 等同於uint8
int、uint 4、8 0 預設整數類型,根據平台,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 預設浮點數類型
complex64 8
complex128 16
rune 4 0 Unicode Code Point, int32
uintptr 4,8 0 足以儲存指標的uint
string "" 字串,預設值為空白字串,而非NULL
array 數組
struct 結構體
function nil 函數
interface nil 介面
map nil 字典,參考型別
slice nil 切片,參考型別
channel nil 通道,參考型別

2.類型別名

設定類型別名後可以讓代碼可讀性更強,一目瞭然這個變數做什麼用的:

type (    ByteSize int64)

3.變數的聲明與賦值

  • 變數的聲明: var a int
  • 變數的賦值:a = 123
  • 聲明並賦值: var a int = 123 (此時若省略類型,則編譯器根據值自動推導類型)
  • 多個變數的聲明

並行方式(可以省略類型,由值推導)

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

函數內部聲明變數的簡寫形式:

funciont main(){    a:= 1}

函數多個傳回值時可以用"_"忽略傳回值

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

4.類型轉換

  • go中不存在隱式轉換,所有類型轉換必須顯示聲明
  • 轉換隻能發生在兩種相互相容的類型之間
  • 類型轉換的格式:
var a float32 = 1.1b := int(a)
  • 文法歧義

如果轉換的目標是指標、單向通道或沒有傳回值的函數類型,那麼必須使用括弧,以避免造成文法分解錯誤。

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

正確的做法是用括弧,讓編譯器將*int解析未指標類型。

(*int)(p)(<-chan int)(c)(func())(x)
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.