tft每日頭條

 > 生活

 > golang語言大全

golang語言大全

生活 更新时间:2025-01-22 19:07:44
一、變量的使用1.1 什麼是變量

變量是為存儲特定類型的值而提供給内存位置的名稱。在go中聲明變量有多種語法。

所以變量的本質就是一小塊内存,用于存儲數據,在程序運行過程中數值可以改變

1.2 聲明變量

var名稱類型是聲明單個變量的語法。

以字母或下劃線開頭,由一個或多個字母、數字、下劃線組成

聲明一個變量

第一種,指定變量類型,聲明後若不賦值,使用默認值

var name type name = value

第二種,根據值自行判定變量類型(類型推斷Type inference)

如果一個變量有一個初始值,Go将自動能夠使用初始值來推斷該變量的類型。因此,如果變量具有初始值,則可以省略變量聲明中的類型。

var name = value

第三種,省略var, 注意 :=左側的變量不應該是已經聲明過的(多個變量同時聲明時,至少保證一個是新變量),否則會導緻編譯錯誤(簡短聲明)

name := value // 例如 var a int = 10 var b = 10 c : = 10

這種方式它隻能被用在函數體内,而不可以用于全局變量的聲明與賦值

示例代碼:

package main var a = "Hello" var b string = "World" var c bool func main(){ println(a, b, c) }

運行結果:

Hello World false

多變量聲明

第一種,以逗号分隔,聲明與賦值分開,若不賦值,存在默認值

var name1, name2, name3 type name1, name2, name3 = v1, v2, v3

第二種,直接賦值,下面的變量類型可以是不同的類型

var name1, name2, name3 = v1, v2, v3

第三種,集合類型

var ( name1 type1 name2 type2 )

1.3 注意事項
  • 變量必須先定義才能使用
  • go語言是靜态語言,要求變量的類型和賦值的類型必須一緻。
  • 變量名不能沖突。(同一個作用于域内不能沖突)
  • 簡短定義方式,左邊的變量名至少有一個是新的
  • 簡短定義方式,不能定義全局變量。
  • 變量的零值。也叫默認值。
  • 變量定義了就要使用,否則無法通過編譯。

如果在相同的代碼塊中,我們不可以再次對于相同名稱的變量使用初始化聲明,例如:a := 20 就是不被允許的,編譯器會提示錯誤 no new variables on left side of :=,但是 a = 20 是可以的,因為這是給相同的變量賦予一個新的值。

如果你在定義變量 a 之前使用它,則會得到編譯錯誤 undefined: a。如果你聲明了一個局部變量卻沒有在相同的代碼塊中使用它,同樣會得到編譯錯誤,例如下面這個例子當中的變量 a:

func main() { var a string = "abc" fmt.Println("hello, world") }

嘗試編譯這段代碼将得到錯誤 a declared and not used

此外,單純地給 a 賦值也是不夠的,這個值必須被使用,所以使用

在同一個作用域中,已存在同名的變量,則之後的聲明初始化,則退化為賦值操作。但這個前提是,最少要有一個新的變量被定義,且在同一作用域,例如,下面的y就是新定義的變量

package main import ( "fmt" ) func main() { x := 140 fmt.Println(&x) x, y := 200, "abc" fmt.Println(&x, x) fmt.Print(y) }

運行結果:

0xc04200a2b0 0xc04200a2b0 200 abc

基本語法——常量constant一、常量的使用1.1 常量聲明

常量是一個簡單值的标識符,在程序運行時,不會被修改的量。

const identifier [type] = value

顯式類型定義: const b string = "abc" 隐式類型定義: const b = "abc"

package main import "fmt" func main() { const LENGTH int = 10 const WIDTH int = 5 var area int const a, b, c = 1, false, "str" //多重賦值 area = LENGTH * WIDTH fmt.Printf("面積為 : %d", area) println() println(a, b, c) }

運行結果:

面積為 : 50 1 false str

常量可以作為枚舉,常量組

const ( Unknown = 0 Female = 1 Male = 2 )

常量組中如不指定類型和初始化值,則與上一行非空常量右值相同

package main import ( "fmt" ) func main() { const ( x uint16 = 16 y s = "abc" z ) fmt.Printf("%T,%v\n", y, y) fmt.Printf("%T,%v\n", z, z) }

運行結果:

uint16,16 string,abc

常量的注意事項:

  • 常量中的數據類型隻可以是布爾型、數字型(整數型、浮點型和複數)和字符串型
  • 不曾使用的常量,在編譯的時候,是不會報錯的
  • 顯示指定類型的時候,必須确保常量左右值類型一緻,需要時可做顯示類型轉換。這與變量就不一樣了,變量是可以是不同的類型值
1.2 iota

iota,特殊常量,可以認為是一個可以被編譯器修改的常量

iota 可以被用作枚舉值:

const ( a = iota b = iota c = iota )

第一個 iota 等于 0,每當 iota 在新的一行被使用時,它的值都會自動加 1;所以 a=0, b=1, c=2 可以簡寫為如下形式:

const ( a = iota b c )

iota 用法

package main import "fmt" func main() { const ( a = iota //0 b //1 c //2 d = "ha" //獨立值,iota = 1 e //"ha" iota = 1 f = 100 //iota =1 g //100 iota =1 h = iota //7,恢複計數 i //8 ) fmt.Println(a,b,c,d,e,f,g,h,i) }

運行結果:

0 1 2 ha ha 100 100 7 8

如果中斷iota自增,則必須顯式恢複。且後續自增值按行序遞增

自增默認是int類型,可以自行進行顯示指定類型

數字常量不會分配存儲空間,無須像變量那樣通過内存尋址來取值,因此無法獲取地址

golang語言大全(GoLang夠浪基本語法)1

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved